// Copyright (c) 2024, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

// On Dart-web, bitwise operators operate on a 32-bit unsigned value. More
// precisely, JavaScript coerces values to signed 32-bit numbers, and Dart-web
// treats these numbers as unsigned 32-bit numbers. This yields a more
// consistent behavior (Dart-web / native) and works better with code ported
// from C/C++. Bitwise operators: &, |, ^, ~, <<, >>, >>>.

// Requirements=js-numbers

import 'package:expect/expect.dart';

void main() {
  Expect.equals(0x0, -0x100000000 & -0x100000000);
  Expect.equals(0x0, -0x100000000 & -0xffffffff);
  Expect.equals(0x0, -0x100000000 & -0xfffffffe);
  Expect.equals(0x0, -0x100000000 & -0xfedcba98);
  Expect.equals(0x0, -0x100000000 & -0xbd217d);
  Expect.equals(0x0, -0x100000000 & -0xa);
  Expect.equals(0x0, -0x100000000 & -0x2);
  Expect.equals(0x0, -0x100000000 & -0x1);
  Expect.equals(0x0, -0x100000000 & 0x0);
  Expect.equals(0x0, -0x100000000 & 0x1);
  Expect.equals(0x0, -0x100000000 & 0x2);
  Expect.equals(0x0, -0x100000000 & 0xa);
  Expect.equals(0x0, -0x100000000 & 0xbd217d);
  Expect.equals(0x0, -0x100000000 & 0xfedcba98);
  Expect.equals(0x0, -0x100000000 & 0xfffffffe);
  Expect.equals(0x0, -0x100000000 & 0xffffffff);
  Expect.equals(0x0, -0x100000000 & 0x100000000);
  Expect.equals(0x0, -0xffffffff & -0x100000000);
  Expect.equals(0x1, -0xffffffff & -0xffffffff);
  Expect.equals(0x0, -0xffffffff & -0xfffffffe);
  Expect.equals(0x0, -0xffffffff & -0xfedcba98);
  Expect.equals(0x1, -0xffffffff & -0xbd217d);
  Expect.equals(0x0, -0xffffffff & -0xa);
  Expect.equals(0x0, -0xffffffff & -0x2);
  Expect.equals(0x1, -0xffffffff & -0x1);
  Expect.equals(0x0, -0xffffffff & 0x0);
  Expect.equals(0x1, -0xffffffff & 0x1);
  Expect.equals(0x0, -0xffffffff & 0x2);
  Expect.equals(0x0, -0xffffffff & 0xa);
  Expect.equals(0x1, -0xffffffff & 0xbd217d);
  Expect.equals(0x0, -0xffffffff & 0xfedcba98);
  Expect.equals(0x0, -0xffffffff & 0xfffffffe);
  Expect.equals(0x1, -0xffffffff & 0xffffffff);
  Expect.equals(0x0, -0xffffffff & 0x100000000);
  Expect.equals(0x0, -0xfffffffe & -0x100000000);
  Expect.equals(0x0, -0xfffffffe & -0xffffffff);
  Expect.equals(0x2, -0xfffffffe & -0xfffffffe);
  Expect.equals(0x0, -0xfffffffe & -0xfedcba98);
  Expect.equals(0x2, -0xfffffffe & -0xbd217d);
  Expect.equals(0x2, -0xfffffffe & -0xa);
  Expect.equals(0x2, -0xfffffffe & -0x2);
  Expect.equals(0x2, -0xfffffffe & -0x1);
  Expect.equals(0x0, -0xfffffffe & 0x0);
  Expect.equals(0x0, -0xfffffffe & 0x1);
  Expect.equals(0x2, -0xfffffffe & 0x2);
  Expect.equals(0x2, -0xfffffffe & 0xa);
  Expect.equals(0x0, -0xfffffffe & 0xbd217d);
  Expect.equals(0x0, -0xfffffffe & 0xfedcba98);
  Expect.equals(0x2, -0xfffffffe & 0xfffffffe);
  Expect.equals(0x2, -0xfffffffe & 0xffffffff);
  Expect.equals(0x0, -0xfffffffe & 0x100000000);
  Expect.equals(0x0, -0xfedcba98 & -0x100000000);
  Expect.equals(0x0, -0xfedcba98 & -0xffffffff);
  Expect.equals(0x0, -0xfedcba98 & -0xfffffffe);
  Expect.equals(0x1234568, -0xfedcba98 & -0xfedcba98);
  Expect.equals(0x1024400, -0xfedcba98 & -0xbd217d);
  Expect.equals(0x1234560, -0xfedcba98 & -0xa);
  Expect.equals(0x1234568, -0xfedcba98 & -0x2);
  Expect.equals(0x1234568, -0xfedcba98 & -0x1);
  Expect.equals(0x0, -0xfedcba98 & 0x0);
  Expect.equals(0x0, -0xfedcba98 & 0x1);
  Expect.equals(0x0, -0xfedcba98 & 0x2);
  Expect.equals(0x8, -0xfedcba98 & 0xa);
  Expect.equals(0x210168, -0xfedcba98 & 0xbd217d);
  Expect.equals(0x8, -0xfedcba98 & 0xfedcba98);
  Expect.equals(0x1234568, -0xfedcba98 & 0xfffffffe);
  Expect.equals(0x1234568, -0xfedcba98 & 0xffffffff);
  Expect.equals(0x0, -0xfedcba98 & 0x100000000);
  Expect.equals(0x0, -0xbd217d & -0x100000000);
  Expect.equals(0x1, -0xbd217d & -0xffffffff);
  Expect.equals(0x2, -0xbd217d & -0xfffffffe);
  Expect.equals(0x1024400, -0xbd217d & -0xfedcba98);
  Expect.equals(0xff42de83, -0xbd217d & -0xbd217d);
  Expect.equals(0xff42de82, -0xbd217d & -0xa);
  Expect.equals(0xff42de82, -0xbd217d & -0x2);
  Expect.equals(0xff42de83, -0xbd217d & -0x1);
  Expect.equals(0x0, -0xbd217d & 0x0);
  Expect.equals(0x1, -0xbd217d & 0x1);
  Expect.equals(0x2, -0xbd217d & 0x2);
  Expect.equals(0x2, -0xbd217d & 0xa);
  Expect.equals(0x1, -0xbd217d & 0xbd217d);
  Expect.equals(0xfe409a80, -0xbd217d & 0xfedcba98);
  Expect.equals(0xff42de82, -0xbd217d & 0xfffffffe);
  Expect.equals(0xff42de83, -0xbd217d & 0xffffffff);
  Expect.equals(0x0, -0xbd217d & 0x100000000);
  Expect.equals(0x0, -0xa & -0x100000000);
  Expect.equals(0x0, -0xa & -0xffffffff);
  Expect.equals(0x2, -0xa & -0xfffffffe);
  Expect.equals(0x1234560, -0xa & -0xfedcba98);
  Expect.equals(0xff42de82, -0xa & -0xbd217d);
  Expect.equals(0xfffffff6, -0xa & -0xa);
  Expect.equals(0xfffffff6, -0xa & -0x2);
  Expect.equals(0xfffffff6, -0xa & -0x1);
  Expect.equals(0x0, -0xa & 0x0);
  Expect.equals(0x0, -0xa & 0x1);
  Expect.equals(0x2, -0xa & 0x2);
  Expect.equals(0x2, -0xa & 0xa);
  Expect.equals(0xbd2174, -0xa & 0xbd217d);
  Expect.equals(0xfedcba90, -0xa & 0xfedcba98);
  Expect.equals(0xfffffff6, -0xa & 0xfffffffe);
  Expect.equals(0xfffffff6, -0xa & 0xffffffff);
  Expect.equals(0x0, -0xa & 0x100000000);
  Expect.equals(0x0, -0x2 & -0x100000000);
  Expect.equals(0x0, -0x2 & -0xffffffff);
  Expect.equals(0x2, -0x2 & -0xfffffffe);
  Expect.equals(0x1234568, -0x2 & -0xfedcba98);
  Expect.equals(0xff42de82, -0x2 & -0xbd217d);
  Expect.equals(0xfffffff6, -0x2 & -0xa);
  Expect.equals(0xfffffffe, -0x2 & -0x2);
  Expect.equals(0xfffffffe, -0x2 & -0x1);
  Expect.equals(0x0, -0x2 & 0x0);
  Expect.equals(0x0, -0x2 & 0x1);
  Expect.equals(0x2, -0x2 & 0x2);
  Expect.equals(0xa, -0x2 & 0xa);
  Expect.equals(0xbd217c, -0x2 & 0xbd217d);
  Expect.equals(0xfedcba98, -0x2 & 0xfedcba98);
  Expect.equals(0xfffffffe, -0x2 & 0xfffffffe);
  Expect.equals(0xfffffffe, -0x2 & 0xffffffff);
  Expect.equals(0x0, -0x2 & 0x100000000);
  Expect.equals(0x0, -0x1 & -0x100000000);
  Expect.equals(0x1, -0x1 & -0xffffffff);
  Expect.equals(0x2, -0x1 & -0xfffffffe);
  Expect.equals(0x1234568, -0x1 & -0xfedcba98);
  Expect.equals(0xff42de83, -0x1 & -0xbd217d);
  Expect.equals(0xfffffff6, -0x1 & -0xa);
  Expect.equals(0xfffffffe, -0x1 & -0x2);
  Expect.equals(0xffffffff, -0x1 & -0x1);
  Expect.equals(0x0, -0x1 & 0x0);
  Expect.equals(0x1, -0x1 & 0x1);
  Expect.equals(0x2, -0x1 & 0x2);
  Expect.equals(0xa, -0x1 & 0xa);
  Expect.equals(0xbd217d, -0x1 & 0xbd217d);
  Expect.equals(0xfedcba98, -0x1 & 0xfedcba98);
  Expect.equals(0xfffffffe, -0x1 & 0xfffffffe);
  Expect.equals(0xffffffff, -0x1 & 0xffffffff);
  Expect.equals(0x0, -0x1 & 0x100000000);
  Expect.equals(0x0, 0x0 & -0x100000000);
  Expect.equals(0x0, 0x0 & -0xffffffff);
  Expect.equals(0x0, 0x0 & -0xfffffffe);
  Expect.equals(0x0, 0x0 & -0xfedcba98);
  Expect.equals(0x0, 0x0 & -0xbd217d);
  Expect.equals(0x0, 0x0 & -0xa);
  Expect.equals(0x0, 0x0 & -0x2);
  Expect.equals(0x0, 0x0 & -0x1);
  Expect.equals(0x0, 0x0 & 0x0);
  Expect.equals(0x0, 0x0 & 0x1);
  Expect.equals(0x0, 0x0 & 0x2);
  Expect.equals(0x0, 0x0 & 0xa);
  Expect.equals(0x0, 0x0 & 0xbd217d);
  Expect.equals(0x0, 0x0 & 0xfedcba98);
  Expect.equals(0x0, 0x0 & 0xfffffffe);
  Expect.equals(0x0, 0x0 & 0xffffffff);
  Expect.equals(0x0, 0x0 & 0x100000000);
  Expect.equals(0x0, 0x1 & -0x100000000);
  Expect.equals(0x1, 0x1 & -0xffffffff);
  Expect.equals(0x0, 0x1 & -0xfffffffe);
  Expect.equals(0x0, 0x1 & -0xfedcba98);
  Expect.equals(0x1, 0x1 & -0xbd217d);
  Expect.equals(0x0, 0x1 & -0xa);
  Expect.equals(0x0, 0x1 & -0x2);
  Expect.equals(0x1, 0x1 & -0x1);
  Expect.equals(0x0, 0x1 & 0x0);
  Expect.equals(0x1, 0x1 & 0x1);
  Expect.equals(0x0, 0x1 & 0x2);
  Expect.equals(0x0, 0x1 & 0xa);
  Expect.equals(0x1, 0x1 & 0xbd217d);
  Expect.equals(0x0, 0x1 & 0xfedcba98);
  Expect.equals(0x0, 0x1 & 0xfffffffe);
  Expect.equals(0x1, 0x1 & 0xffffffff);
  Expect.equals(0x0, 0x1 & 0x100000000);
  Expect.equals(0x0, 0x2 & -0x100000000);
  Expect.equals(0x0, 0x2 & -0xffffffff);
  Expect.equals(0x2, 0x2 & -0xfffffffe);
  Expect.equals(0x0, 0x2 & -0xfedcba98);
  Expect.equals(0x2, 0x2 & -0xbd217d);
  Expect.equals(0x2, 0x2 & -0xa);
  Expect.equals(0x2, 0x2 & -0x2);
  Expect.equals(0x2, 0x2 & -0x1);
  Expect.equals(0x0, 0x2 & 0x0);
  Expect.equals(0x0, 0x2 & 0x1);
  Expect.equals(0x2, 0x2 & 0x2);
  Expect.equals(0x2, 0x2 & 0xa);
  Expect.equals(0x0, 0x2 & 0xbd217d);
  Expect.equals(0x0, 0x2 & 0xfedcba98);
  Expect.equals(0x2, 0x2 & 0xfffffffe);
  Expect.equals(0x2, 0x2 & 0xffffffff);
  Expect.equals(0x0, 0x2 & 0x100000000);
  Expect.equals(0x0, 0xa & -0x100000000);
  Expect.equals(0x0, 0xa & -0xffffffff);
  Expect.equals(0x2, 0xa & -0xfffffffe);
  Expect.equals(0x8, 0xa & -0xfedcba98);
  Expect.equals(0x2, 0xa & -0xbd217d);
  Expect.equals(0x2, 0xa & -0xa);
  Expect.equals(0xa, 0xa & -0x2);
  Expect.equals(0xa, 0xa & -0x1);
  Expect.equals(0x0, 0xa & 0x0);
  Expect.equals(0x0, 0xa & 0x1);
  Expect.equals(0x2, 0xa & 0x2);
  Expect.equals(0xa, 0xa & 0xa);
  Expect.equals(0x8, 0xa & 0xbd217d);
  Expect.equals(0x8, 0xa & 0xfedcba98);
  Expect.equals(0xa, 0xa & 0xfffffffe);
  Expect.equals(0xa, 0xa & 0xffffffff);
  Expect.equals(0x0, 0xa & 0x100000000);
  Expect.equals(0x0, 0xbd217d & -0x100000000);
  Expect.equals(0x1, 0xbd217d & -0xffffffff);
  Expect.equals(0x0, 0xbd217d & -0xfffffffe);
  Expect.equals(0x210168, 0xbd217d & -0xfedcba98);
  Expect.equals(0x1, 0xbd217d & -0xbd217d);
  Expect.equals(0xbd2174, 0xbd217d & -0xa);
  Expect.equals(0xbd217c, 0xbd217d & -0x2);
  Expect.equals(0xbd217d, 0xbd217d & -0x1);
  Expect.equals(0x0, 0xbd217d & 0x0);
  Expect.equals(0x1, 0xbd217d & 0x1);
  Expect.equals(0x0, 0xbd217d & 0x2);
  Expect.equals(0x8, 0xbd217d & 0xa);
  Expect.equals(0xbd217d, 0xbd217d & 0xbd217d);
  Expect.equals(0x9c2018, 0xbd217d & 0xfedcba98);
  Expect.equals(0xbd217c, 0xbd217d & 0xfffffffe);
  Expect.equals(0xbd217d, 0xbd217d & 0xffffffff);
  Expect.equals(0x0, 0xbd217d & 0x100000000);
  Expect.equals(0x0, 0xfedcba98 & -0x100000000);
  Expect.equals(0x0, 0xfedcba98 & -0xffffffff);
  Expect.equals(0x0, 0xfedcba98 & -0xfffffffe);
  Expect.equals(0x8, 0xfedcba98 & -0xfedcba98);
  Expect.equals(0xfe409a80, 0xfedcba98 & -0xbd217d);
  Expect.equals(0xfedcba90, 0xfedcba98 & -0xa);
  Expect.equals(0xfedcba98, 0xfedcba98 & -0x2);
  Expect.equals(0xfedcba98, 0xfedcba98 & -0x1);
  Expect.equals(0x0, 0xfedcba98 & 0x0);
  Expect.equals(0x0, 0xfedcba98 & 0x1);
  Expect.equals(0x0, 0xfedcba98 & 0x2);
  Expect.equals(0x8, 0xfedcba98 & 0xa);
  Expect.equals(0x9c2018, 0xfedcba98 & 0xbd217d);
  Expect.equals(0xfedcba98, 0xfedcba98 & 0xfedcba98);
  Expect.equals(0xfedcba98, 0xfedcba98 & 0xfffffffe);
  Expect.equals(0xfedcba98, 0xfedcba98 & 0xffffffff);
  Expect.equals(0x0, 0xfedcba98 & 0x100000000);
  Expect.equals(0x0, 0xfffffffe & -0x100000000);
  Expect.equals(0x0, 0xfffffffe & -0xffffffff);
  Expect.equals(0x2, 0xfffffffe & -0xfffffffe);
  Expect.equals(0x1234568, 0xfffffffe & -0xfedcba98);
  Expect.equals(0xff42de82, 0xfffffffe & -0xbd217d);
  Expect.equals(0xfffffff6, 0xfffffffe & -0xa);
  Expect.equals(0xfffffffe, 0xfffffffe & -0x2);
  Expect.equals(0xfffffffe, 0xfffffffe & -0x1);
  Expect.equals(0x0, 0xfffffffe & 0x0);
  Expect.equals(0x0, 0xfffffffe & 0x1);
  Expect.equals(0x2, 0xfffffffe & 0x2);
  Expect.equals(0xa, 0xfffffffe & 0xa);
  Expect.equals(0xbd217c, 0xfffffffe & 0xbd217d);
  Expect.equals(0xfedcba98, 0xfffffffe & 0xfedcba98);
  Expect.equals(0xfffffffe, 0xfffffffe & 0xfffffffe);
  Expect.equals(0xfffffffe, 0xfffffffe & 0xffffffff);
  Expect.equals(0x0, 0xfffffffe & 0x100000000);
  Expect.equals(0x0, 0xffffffff & -0x100000000);
  Expect.equals(0x1, 0xffffffff & -0xffffffff);
  Expect.equals(0x2, 0xffffffff & -0xfffffffe);
  Expect.equals(0x1234568, 0xffffffff & -0xfedcba98);
  Expect.equals(0xff42de83, 0xffffffff & -0xbd217d);
  Expect.equals(0xfffffff6, 0xffffffff & -0xa);
  Expect.equals(0xfffffffe, 0xffffffff & -0x2);
  Expect.equals(0xffffffff, 0xffffffff & -0x1);
  Expect.equals(0x0, 0xffffffff & 0x0);
  Expect.equals(0x1, 0xffffffff & 0x1);
  Expect.equals(0x2, 0xffffffff & 0x2);
  Expect.equals(0xa, 0xffffffff & 0xa);
  Expect.equals(0xbd217d, 0xffffffff & 0xbd217d);
  Expect.equals(0xfedcba98, 0xffffffff & 0xfedcba98);
  Expect.equals(0xfffffffe, 0xffffffff & 0xfffffffe);
  Expect.equals(0xffffffff, 0xffffffff & 0xffffffff);
  Expect.equals(0x0, 0xffffffff & 0x100000000);
  Expect.equals(0x0, 0x100000000 & -0x100000000);
  Expect.equals(0x0, 0x100000000 & -0xffffffff);
  Expect.equals(0x0, 0x100000000 & -0xfffffffe);
  Expect.equals(0x0, 0x100000000 & -0xfedcba98);
  Expect.equals(0x0, 0x100000000 & -0xbd217d);
  Expect.equals(0x0, 0x100000000 & -0xa);
  Expect.equals(0x0, 0x100000000 & -0x2);
  Expect.equals(0x0, 0x100000000 & -0x1);
  Expect.equals(0x0, 0x100000000 & 0x0);
  Expect.equals(0x0, 0x100000000 & 0x1);
  Expect.equals(0x0, 0x100000000 & 0x2);
  Expect.equals(0x0, 0x100000000 & 0xa);
  Expect.equals(0x0, 0x100000000 & 0xbd217d);
  Expect.equals(0x0, 0x100000000 & 0xfedcba98);
  Expect.equals(0x0, 0x100000000 & 0xfffffffe);
  Expect.equals(0x0, 0x100000000 & 0xffffffff);
  Expect.equals(0x0, 0x100000000 & 0x100000000);

  Expect.equals(0x0, -0x100000000 | -0x100000000);
  Expect.equals(0x1, -0x100000000 | -0xffffffff);
  Expect.equals(0x2, -0x100000000 | -0xfffffffe);
  Expect.equals(0x1234568, -0x100000000 | -0xfedcba98);
  Expect.equals(0xff42de83, -0x100000000 | -0xbd217d);
  Expect.equals(0xfffffff6, -0x100000000 | -0xa);
  Expect.equals(0xfffffffe, -0x100000000 | -0x2);
  Expect.equals(0xffffffff, -0x100000000 | -0x1);
  Expect.equals(0x0, -0x100000000 | 0x0);
  Expect.equals(0x1, -0x100000000 | 0x1);
  Expect.equals(0x2, -0x100000000 | 0x2);
  Expect.equals(0xa, -0x100000000 | 0xa);
  Expect.equals(0xbd217d, -0x100000000 | 0xbd217d);
  Expect.equals(0xfedcba98, -0x100000000 | 0xfedcba98);
  Expect.equals(0xfffffffe, -0x100000000 | 0xfffffffe);
  Expect.equals(0xffffffff, -0x100000000 | 0xffffffff);
  Expect.equals(0x0, -0x100000000 | 0x100000000);
  Expect.equals(0x1, -0xffffffff | -0x100000000);
  Expect.equals(0x1, -0xffffffff | -0xffffffff);
  Expect.equals(0x3, -0xffffffff | -0xfffffffe);
  Expect.equals(0x1234569, -0xffffffff | -0xfedcba98);
  Expect.equals(0xff42de83, -0xffffffff | -0xbd217d);
  Expect.equals(0xfffffff7, -0xffffffff | -0xa);
  Expect.equals(0xffffffff, -0xffffffff | -0x2);
  Expect.equals(0xffffffff, -0xffffffff | -0x1);
  Expect.equals(0x1, -0xffffffff | 0x0);
  Expect.equals(0x1, -0xffffffff | 0x1);
  Expect.equals(0x3, -0xffffffff | 0x2);
  Expect.equals(0xb, -0xffffffff | 0xa);
  Expect.equals(0xbd217d, -0xffffffff | 0xbd217d);
  Expect.equals(0xfedcba99, -0xffffffff | 0xfedcba98);
  Expect.equals(0xffffffff, -0xffffffff | 0xfffffffe);
  Expect.equals(0xffffffff, -0xffffffff | 0xffffffff);
  Expect.equals(0x1, -0xffffffff | 0x100000000);
  Expect.equals(0x2, -0xfffffffe | -0x100000000);
  Expect.equals(0x3, -0xfffffffe | -0xffffffff);
  Expect.equals(0x2, -0xfffffffe | -0xfffffffe);
  Expect.equals(0x123456a, -0xfffffffe | -0xfedcba98);
  Expect.equals(0xff42de83, -0xfffffffe | -0xbd217d);
  Expect.equals(0xfffffff6, -0xfffffffe | -0xa);
  Expect.equals(0xfffffffe, -0xfffffffe | -0x2);
  Expect.equals(0xffffffff, -0xfffffffe | -0x1);
  Expect.equals(0x2, -0xfffffffe | 0x0);
  Expect.equals(0x3, -0xfffffffe | 0x1);
  Expect.equals(0x2, -0xfffffffe | 0x2);
  Expect.equals(0xa, -0xfffffffe | 0xa);
  Expect.equals(0xbd217f, -0xfffffffe | 0xbd217d);
  Expect.equals(0xfedcba9a, -0xfffffffe | 0xfedcba98);
  Expect.equals(0xfffffffe, -0xfffffffe | 0xfffffffe);
  Expect.equals(0xffffffff, -0xfffffffe | 0xffffffff);
  Expect.equals(0x2, -0xfffffffe | 0x100000000);
  Expect.equals(0x1234568, -0xfedcba98 | -0x100000000);
  Expect.equals(0x1234569, -0xfedcba98 | -0xffffffff);
  Expect.equals(0x123456a, -0xfedcba98 | -0xfffffffe);
  Expect.equals(0x1234568, -0xfedcba98 | -0xfedcba98);
  Expect.equals(0xff63dfeb, -0xfedcba98 | -0xbd217d);
  Expect.equals(0xfffffffe, -0xfedcba98 | -0xa);
  Expect.equals(0xfffffffe, -0xfedcba98 | -0x2);
  Expect.equals(0xffffffff, -0xfedcba98 | -0x1);
  Expect.equals(0x1234568, -0xfedcba98 | 0x0);
  Expect.equals(0x1234569, -0xfedcba98 | 0x1);
  Expect.equals(0x123456a, -0xfedcba98 | 0x2);
  Expect.equals(0x123456a, -0xfedcba98 | 0xa);
  Expect.equals(0x1bf657d, -0xfedcba98 | 0xbd217d);
  Expect.equals(0xfffffff8, -0xfedcba98 | 0xfedcba98);
  Expect.equals(0xfffffffe, -0xfedcba98 | 0xfffffffe);
  Expect.equals(0xffffffff, -0xfedcba98 | 0xffffffff);
  Expect.equals(0x1234568, -0xfedcba98 | 0x100000000);
  Expect.equals(0xff42de83, -0xbd217d | -0x100000000);
  Expect.equals(0xff42de83, -0xbd217d | -0xffffffff);
  Expect.equals(0xff42de83, -0xbd217d | -0xfffffffe);
  Expect.equals(0xff63dfeb, -0xbd217d | -0xfedcba98);
  Expect.equals(0xff42de83, -0xbd217d | -0xbd217d);
  Expect.equals(0xfffffff7, -0xbd217d | -0xa);
  Expect.equals(0xffffffff, -0xbd217d | -0x2);
  Expect.equals(0xffffffff, -0xbd217d | -0x1);
  Expect.equals(0xff42de83, -0xbd217d | 0x0);
  Expect.equals(0xff42de83, -0xbd217d | 0x1);
  Expect.equals(0xff42de83, -0xbd217d | 0x2);
  Expect.equals(0xff42de8b, -0xbd217d | 0xa);
  Expect.equals(0xffffffff, -0xbd217d | 0xbd217d);
  Expect.equals(0xffdefe9b, -0xbd217d | 0xfedcba98);
  Expect.equals(0xffffffff, -0xbd217d | 0xfffffffe);
  Expect.equals(0xffffffff, -0xbd217d | 0xffffffff);
  Expect.equals(0xff42de83, -0xbd217d | 0x100000000);
  Expect.equals(0xfffffff6, -0xa | -0x100000000);
  Expect.equals(0xfffffff7, -0xa | -0xffffffff);
  Expect.equals(0xfffffff6, -0xa | -0xfffffffe);
  Expect.equals(0xfffffffe, -0xa | -0xfedcba98);
  Expect.equals(0xfffffff7, -0xa | -0xbd217d);
  Expect.equals(0xfffffff6, -0xa | -0xa);
  Expect.equals(0xfffffffe, -0xa | -0x2);
  Expect.equals(0xffffffff, -0xa | -0x1);
  Expect.equals(0xfffffff6, -0xa | 0x0);
  Expect.equals(0xfffffff7, -0xa | 0x1);
  Expect.equals(0xfffffff6, -0xa | 0x2);
  Expect.equals(0xfffffffe, -0xa | 0xa);
  Expect.equals(0xffffffff, -0xa | 0xbd217d);
  Expect.equals(0xfffffffe, -0xa | 0xfedcba98);
  Expect.equals(0xfffffffe, -0xa | 0xfffffffe);
  Expect.equals(0xffffffff, -0xa | 0xffffffff);
  Expect.equals(0xfffffff6, -0xa | 0x100000000);
  Expect.equals(0xfffffffe, -0x2 | -0x100000000);
  Expect.equals(0xffffffff, -0x2 | -0xffffffff);
  Expect.equals(0xfffffffe, -0x2 | -0xfffffffe);
  Expect.equals(0xfffffffe, -0x2 | -0xfedcba98);
  Expect.equals(0xffffffff, -0x2 | -0xbd217d);
  Expect.equals(0xfffffffe, -0x2 | -0xa);
  Expect.equals(0xfffffffe, -0x2 | -0x2);
  Expect.equals(0xffffffff, -0x2 | -0x1);
  Expect.equals(0xfffffffe, -0x2 | 0x0);
  Expect.equals(0xffffffff, -0x2 | 0x1);
  Expect.equals(0xfffffffe, -0x2 | 0x2);
  Expect.equals(0xfffffffe, -0x2 | 0xa);
  Expect.equals(0xffffffff, -0x2 | 0xbd217d);
  Expect.equals(0xfffffffe, -0x2 | 0xfedcba98);
  Expect.equals(0xfffffffe, -0x2 | 0xfffffffe);
  Expect.equals(0xffffffff, -0x2 | 0xffffffff);
  Expect.equals(0xfffffffe, -0x2 | 0x100000000);
  Expect.equals(0xffffffff, -0x1 | -0x100000000);
  Expect.equals(0xffffffff, -0x1 | -0xffffffff);
  Expect.equals(0xffffffff, -0x1 | -0xfffffffe);
  Expect.equals(0xffffffff, -0x1 | -0xfedcba98);
  Expect.equals(0xffffffff, -0x1 | -0xbd217d);
  Expect.equals(0xffffffff, -0x1 | -0xa);
  Expect.equals(0xffffffff, -0x1 | -0x2);
  Expect.equals(0xffffffff, -0x1 | -0x1);
  Expect.equals(0xffffffff, -0x1 | 0x0);
  Expect.equals(0xffffffff, -0x1 | 0x1);
  Expect.equals(0xffffffff, -0x1 | 0x2);
  Expect.equals(0xffffffff, -0x1 | 0xa);
  Expect.equals(0xffffffff, -0x1 | 0xbd217d);
  Expect.equals(0xffffffff, -0x1 | 0xfedcba98);
  Expect.equals(0xffffffff, -0x1 | 0xfffffffe);
  Expect.equals(0xffffffff, -0x1 | 0xffffffff);
  Expect.equals(0xffffffff, -0x1 | 0x100000000);
  Expect.equals(0x0, 0x0 | -0x100000000);
  Expect.equals(0x1, 0x0 | -0xffffffff);
  Expect.equals(0x2, 0x0 | -0xfffffffe);
  Expect.equals(0x1234568, 0x0 | -0xfedcba98);
  Expect.equals(0xff42de83, 0x0 | -0xbd217d);
  Expect.equals(0xfffffff6, 0x0 | -0xa);
  Expect.equals(0xfffffffe, 0x0 | -0x2);
  Expect.equals(0xffffffff, 0x0 | -0x1);
  Expect.equals(0x0, 0x0 | 0x0);
  Expect.equals(0x1, 0x0 | 0x1);
  Expect.equals(0x2, 0x0 | 0x2);
  Expect.equals(0xa, 0x0 | 0xa);
  Expect.equals(0xbd217d, 0x0 | 0xbd217d);
  Expect.equals(0xfedcba98, 0x0 | 0xfedcba98);
  Expect.equals(0xfffffffe, 0x0 | 0xfffffffe);
  Expect.equals(0xffffffff, 0x0 | 0xffffffff);
  Expect.equals(0x0, 0x0 | 0x100000000);
  Expect.equals(0x1, 0x1 | -0x100000000);
  Expect.equals(0x1, 0x1 | -0xffffffff);
  Expect.equals(0x3, 0x1 | -0xfffffffe);
  Expect.equals(0x1234569, 0x1 | -0xfedcba98);
  Expect.equals(0xff42de83, 0x1 | -0xbd217d);
  Expect.equals(0xfffffff7, 0x1 | -0xa);
  Expect.equals(0xffffffff, 0x1 | -0x2);
  Expect.equals(0xffffffff, 0x1 | -0x1);
  Expect.equals(0x1, 0x1 | 0x0);
  Expect.equals(0x1, 0x1 | 0x1);
  Expect.equals(0x3, 0x1 | 0x2);
  Expect.equals(0xb, 0x1 | 0xa);
  Expect.equals(0xbd217d, 0x1 | 0xbd217d);
  Expect.equals(0xfedcba99, 0x1 | 0xfedcba98);
  Expect.equals(0xffffffff, 0x1 | 0xfffffffe);
  Expect.equals(0xffffffff, 0x1 | 0xffffffff);
  Expect.equals(0x1, 0x1 | 0x100000000);
  Expect.equals(0x2, 0x2 | -0x100000000);
  Expect.equals(0x3, 0x2 | -0xffffffff);
  Expect.equals(0x2, 0x2 | -0xfffffffe);
  Expect.equals(0x123456a, 0x2 | -0xfedcba98);
  Expect.equals(0xff42de83, 0x2 | -0xbd217d);
  Expect.equals(0xfffffff6, 0x2 | -0xa);
  Expect.equals(0xfffffffe, 0x2 | -0x2);
  Expect.equals(0xffffffff, 0x2 | -0x1);
  Expect.equals(0x2, 0x2 | 0x0);
  Expect.equals(0x3, 0x2 | 0x1);
  Expect.equals(0x2, 0x2 | 0x2);
  Expect.equals(0xa, 0x2 | 0xa);
  Expect.equals(0xbd217f, 0x2 | 0xbd217d);
  Expect.equals(0xfedcba9a, 0x2 | 0xfedcba98);
  Expect.equals(0xfffffffe, 0x2 | 0xfffffffe);
  Expect.equals(0xffffffff, 0x2 | 0xffffffff);
  Expect.equals(0x2, 0x2 | 0x100000000);
  Expect.equals(0xa, 0xa | -0x100000000);
  Expect.equals(0xb, 0xa | -0xffffffff);
  Expect.equals(0xa, 0xa | -0xfffffffe);
  Expect.equals(0x123456a, 0xa | -0xfedcba98);
  Expect.equals(0xff42de8b, 0xa | -0xbd217d);
  Expect.equals(0xfffffffe, 0xa | -0xa);
  Expect.equals(0xfffffffe, 0xa | -0x2);
  Expect.equals(0xffffffff, 0xa | -0x1);
  Expect.equals(0xa, 0xa | 0x0);
  Expect.equals(0xb, 0xa | 0x1);
  Expect.equals(0xa, 0xa | 0x2);
  Expect.equals(0xa, 0xa | 0xa);
  Expect.equals(0xbd217f, 0xa | 0xbd217d);
  Expect.equals(0xfedcba9a, 0xa | 0xfedcba98);
  Expect.equals(0xfffffffe, 0xa | 0xfffffffe);
  Expect.equals(0xffffffff, 0xa | 0xffffffff);
  Expect.equals(0xa, 0xa | 0x100000000);
  Expect.equals(0xbd217d, 0xbd217d | -0x100000000);
  Expect.equals(0xbd217d, 0xbd217d | -0xffffffff);
  Expect.equals(0xbd217f, 0xbd217d | -0xfffffffe);
  Expect.equals(0x1bf657d, 0xbd217d | -0xfedcba98);
  Expect.equals(0xffffffff, 0xbd217d | -0xbd217d);
  Expect.equals(0xffffffff, 0xbd217d | -0xa);
  Expect.equals(0xffffffff, 0xbd217d | -0x2);
  Expect.equals(0xffffffff, 0xbd217d | -0x1);
  Expect.equals(0xbd217d, 0xbd217d | 0x0);
  Expect.equals(0xbd217d, 0xbd217d | 0x1);
  Expect.equals(0xbd217f, 0xbd217d | 0x2);
  Expect.equals(0xbd217f, 0xbd217d | 0xa);
  Expect.equals(0xbd217d, 0xbd217d | 0xbd217d);
  Expect.equals(0xfefdbbfd, 0xbd217d | 0xfedcba98);
  Expect.equals(0xffffffff, 0xbd217d | 0xfffffffe);
  Expect.equals(0xffffffff, 0xbd217d | 0xffffffff);
  Expect.equals(0xbd217d, 0xbd217d | 0x100000000);
  Expect.equals(0xfedcba98, 0xfedcba98 | -0x100000000);
  Expect.equals(0xfedcba99, 0xfedcba98 | -0xffffffff);
  Expect.equals(0xfedcba9a, 0xfedcba98 | -0xfffffffe);
  Expect.equals(0xfffffff8, 0xfedcba98 | -0xfedcba98);
  Expect.equals(0xffdefe9b, 0xfedcba98 | -0xbd217d);
  Expect.equals(0xfffffffe, 0xfedcba98 | -0xa);
  Expect.equals(0xfffffffe, 0xfedcba98 | -0x2);
  Expect.equals(0xffffffff, 0xfedcba98 | -0x1);
  Expect.equals(0xfedcba98, 0xfedcba98 | 0x0);
  Expect.equals(0xfedcba99, 0xfedcba98 | 0x1);
  Expect.equals(0xfedcba9a, 0xfedcba98 | 0x2);
  Expect.equals(0xfedcba9a, 0xfedcba98 | 0xa);
  Expect.equals(0xfefdbbfd, 0xfedcba98 | 0xbd217d);
  Expect.equals(0xfedcba98, 0xfedcba98 | 0xfedcba98);
  Expect.equals(0xfffffffe, 0xfedcba98 | 0xfffffffe);
  Expect.equals(0xffffffff, 0xfedcba98 | 0xffffffff);
  Expect.equals(0xfedcba98, 0xfedcba98 | 0x100000000);
  Expect.equals(0xfffffffe, 0xfffffffe | -0x100000000);
  Expect.equals(0xffffffff, 0xfffffffe | -0xffffffff);
  Expect.equals(0xfffffffe, 0xfffffffe | -0xfffffffe);
  Expect.equals(0xfffffffe, 0xfffffffe | -0xfedcba98);
  Expect.equals(0xffffffff, 0xfffffffe | -0xbd217d);
  Expect.equals(0xfffffffe, 0xfffffffe | -0xa);
  Expect.equals(0xfffffffe, 0xfffffffe | -0x2);
  Expect.equals(0xffffffff, 0xfffffffe | -0x1);
  Expect.equals(0xfffffffe, 0xfffffffe | 0x0);
  Expect.equals(0xffffffff, 0xfffffffe | 0x1);
  Expect.equals(0xfffffffe, 0xfffffffe | 0x2);
  Expect.equals(0xfffffffe, 0xfffffffe | 0xa);
  Expect.equals(0xffffffff, 0xfffffffe | 0xbd217d);
  Expect.equals(0xfffffffe, 0xfffffffe | 0xfedcba98);
  Expect.equals(0xfffffffe, 0xfffffffe | 0xfffffffe);
  Expect.equals(0xffffffff, 0xfffffffe | 0xffffffff);
  Expect.equals(0xfffffffe, 0xfffffffe | 0x100000000);
  Expect.equals(0xffffffff, 0xffffffff | -0x100000000);
  Expect.equals(0xffffffff, 0xffffffff | -0xffffffff);
  Expect.equals(0xffffffff, 0xffffffff | -0xfffffffe);
  Expect.equals(0xffffffff, 0xffffffff | -0xfedcba98);
  Expect.equals(0xffffffff, 0xffffffff | -0xbd217d);
  Expect.equals(0xffffffff, 0xffffffff | -0xa);
  Expect.equals(0xffffffff, 0xffffffff | -0x2);
  Expect.equals(0xffffffff, 0xffffffff | -0x1);
  Expect.equals(0xffffffff, 0xffffffff | 0x0);
  Expect.equals(0xffffffff, 0xffffffff | 0x1);
  Expect.equals(0xffffffff, 0xffffffff | 0x2);
  Expect.equals(0xffffffff, 0xffffffff | 0xa);
  Expect.equals(0xffffffff, 0xffffffff | 0xbd217d);
  Expect.equals(0xffffffff, 0xffffffff | 0xfedcba98);
  Expect.equals(0xffffffff, 0xffffffff | 0xfffffffe);
  Expect.equals(0xffffffff, 0xffffffff | 0xffffffff);
  Expect.equals(0xffffffff, 0xffffffff | 0x100000000);
  Expect.equals(0x0, 0x100000000 | -0x100000000);
  Expect.equals(0x1, 0x100000000 | -0xffffffff);
  Expect.equals(0x2, 0x100000000 | -0xfffffffe);
  Expect.equals(0x1234568, 0x100000000 | -0xfedcba98);
  Expect.equals(0xff42de83, 0x100000000 | -0xbd217d);
  Expect.equals(0xfffffff6, 0x100000000 | -0xa);
  Expect.equals(0xfffffffe, 0x100000000 | -0x2);
  Expect.equals(0xffffffff, 0x100000000 | -0x1);
  Expect.equals(0x0, 0x100000000 | 0x0);
  Expect.equals(0x1, 0x100000000 | 0x1);
  Expect.equals(0x2, 0x100000000 | 0x2);
  Expect.equals(0xa, 0x100000000 | 0xa);
  Expect.equals(0xbd217d, 0x100000000 | 0xbd217d);
  Expect.equals(0xfedcba98, 0x100000000 | 0xfedcba98);
  Expect.equals(0xfffffffe, 0x100000000 | 0xfffffffe);
  Expect.equals(0xffffffff, 0x100000000 | 0xffffffff);
  Expect.equals(0x0, 0x100000000 | 0x100000000);

  Expect.equals(0x0, -0x100000000 ^ -0x100000000);
  Expect.equals(0x1, -0x100000000 ^ -0xffffffff);
  Expect.equals(0x2, -0x100000000 ^ -0xfffffffe);
  Expect.equals(0x1234568, -0x100000000 ^ -0xfedcba98);
  Expect.equals(0xff42de83, -0x100000000 ^ -0xbd217d);
  Expect.equals(0xfffffff6, -0x100000000 ^ -0xa);
  Expect.equals(0xfffffffe, -0x100000000 ^ -0x2);
  Expect.equals(0xffffffff, -0x100000000 ^ -0x1);
  Expect.equals(0x0, -0x100000000 ^ 0x0);
  Expect.equals(0x1, -0x100000000 ^ 0x1);
  Expect.equals(0x2, -0x100000000 ^ 0x2);
  Expect.equals(0xa, -0x100000000 ^ 0xa);
  Expect.equals(0xbd217d, -0x100000000 ^ 0xbd217d);
  Expect.equals(0xfedcba98, -0x100000000 ^ 0xfedcba98);
  Expect.equals(0xfffffffe, -0x100000000 ^ 0xfffffffe);
  Expect.equals(0xffffffff, -0x100000000 ^ 0xffffffff);
  Expect.equals(0x0, -0x100000000 ^ 0x100000000);
  Expect.equals(0x1, -0xffffffff ^ -0x100000000);
  Expect.equals(0x0, -0xffffffff ^ -0xffffffff);
  Expect.equals(0x3, -0xffffffff ^ -0xfffffffe);
  Expect.equals(0x1234569, -0xffffffff ^ -0xfedcba98);
  Expect.equals(0xff42de82, -0xffffffff ^ -0xbd217d);
  Expect.equals(0xfffffff7, -0xffffffff ^ -0xa);
  Expect.equals(0xffffffff, -0xffffffff ^ -0x2);
  Expect.equals(0xfffffffe, -0xffffffff ^ -0x1);
  Expect.equals(0x1, -0xffffffff ^ 0x0);
  Expect.equals(0x0, -0xffffffff ^ 0x1);
  Expect.equals(0x3, -0xffffffff ^ 0x2);
  Expect.equals(0xb, -0xffffffff ^ 0xa);
  Expect.equals(0xbd217c, -0xffffffff ^ 0xbd217d);
  Expect.equals(0xfedcba99, -0xffffffff ^ 0xfedcba98);
  Expect.equals(0xffffffff, -0xffffffff ^ 0xfffffffe);
  Expect.equals(0xfffffffe, -0xffffffff ^ 0xffffffff);
  Expect.equals(0x1, -0xffffffff ^ 0x100000000);
  Expect.equals(0x2, -0xfffffffe ^ -0x100000000);
  Expect.equals(0x3, -0xfffffffe ^ -0xffffffff);
  Expect.equals(0x0, -0xfffffffe ^ -0xfffffffe);
  Expect.equals(0x123456a, -0xfffffffe ^ -0xfedcba98);
  Expect.equals(0xff42de81, -0xfffffffe ^ -0xbd217d);
  Expect.equals(0xfffffff4, -0xfffffffe ^ -0xa);
  Expect.equals(0xfffffffc, -0xfffffffe ^ -0x2);
  Expect.equals(0xfffffffd, -0xfffffffe ^ -0x1);
  Expect.equals(0x2, -0xfffffffe ^ 0x0);
  Expect.equals(0x3, -0xfffffffe ^ 0x1);
  Expect.equals(0x0, -0xfffffffe ^ 0x2);
  Expect.equals(0x8, -0xfffffffe ^ 0xa);
  Expect.equals(0xbd217f, -0xfffffffe ^ 0xbd217d);
  Expect.equals(0xfedcba9a, -0xfffffffe ^ 0xfedcba98);
  Expect.equals(0xfffffffc, -0xfffffffe ^ 0xfffffffe);
  Expect.equals(0xfffffffd, -0xfffffffe ^ 0xffffffff);
  Expect.equals(0x2, -0xfffffffe ^ 0x100000000);
  Expect.equals(0x1234568, -0xfedcba98 ^ -0x100000000);
  Expect.equals(0x1234569, -0xfedcba98 ^ -0xffffffff);
  Expect.equals(0x123456a, -0xfedcba98 ^ -0xfffffffe);
  Expect.equals(0x0, -0xfedcba98 ^ -0xfedcba98);
  Expect.equals(0xfe619beb, -0xfedcba98 ^ -0xbd217d);
  Expect.equals(0xfedcba9e, -0xfedcba98 ^ -0xa);
  Expect.equals(0xfedcba96, -0xfedcba98 ^ -0x2);
  Expect.equals(0xfedcba97, -0xfedcba98 ^ -0x1);
  Expect.equals(0x1234568, -0xfedcba98 ^ 0x0);
  Expect.equals(0x1234569, -0xfedcba98 ^ 0x1);
  Expect.equals(0x123456a, -0xfedcba98 ^ 0x2);
  Expect.equals(0x1234562, -0xfedcba98 ^ 0xa);
  Expect.equals(0x19e6415, -0xfedcba98 ^ 0xbd217d);
  Expect.equals(0xfffffff0, -0xfedcba98 ^ 0xfedcba98);
  Expect.equals(0xfedcba96, -0xfedcba98 ^ 0xfffffffe);
  Expect.equals(0xfedcba97, -0xfedcba98 ^ 0xffffffff);
  Expect.equals(0x1234568, -0xfedcba98 ^ 0x100000000);
  Expect.equals(0xff42de83, -0xbd217d ^ -0x100000000);
  Expect.equals(0xff42de82, -0xbd217d ^ -0xffffffff);
  Expect.equals(0xff42de81, -0xbd217d ^ -0xfffffffe);
  Expect.equals(0xfe619beb, -0xbd217d ^ -0xfedcba98);
  Expect.equals(0x0, -0xbd217d ^ -0xbd217d);
  Expect.equals(0xbd2175, -0xbd217d ^ -0xa);
  Expect.equals(0xbd217d, -0xbd217d ^ -0x2);
  Expect.equals(0xbd217c, -0xbd217d ^ -0x1);
  Expect.equals(0xff42de83, -0xbd217d ^ 0x0);
  Expect.equals(0xff42de82, -0xbd217d ^ 0x1);
  Expect.equals(0xff42de81, -0xbd217d ^ 0x2);
  Expect.equals(0xff42de89, -0xbd217d ^ 0xa);
  Expect.equals(0xfffffffe, -0xbd217d ^ 0xbd217d);
  Expect.equals(0x19e641b, -0xbd217d ^ 0xfedcba98);
  Expect.equals(0xbd217d, -0xbd217d ^ 0xfffffffe);
  Expect.equals(0xbd217c, -0xbd217d ^ 0xffffffff);
  Expect.equals(0xff42de83, -0xbd217d ^ 0x100000000);
  Expect.equals(0xfffffff6, -0xa ^ -0x100000000);
  Expect.equals(0xfffffff7, -0xa ^ -0xffffffff);
  Expect.equals(0xfffffff4, -0xa ^ -0xfffffffe);
  Expect.equals(0xfedcba9e, -0xa ^ -0xfedcba98);
  Expect.equals(0xbd2175, -0xa ^ -0xbd217d);
  Expect.equals(0x0, -0xa ^ -0xa);
  Expect.equals(0x8, -0xa ^ -0x2);
  Expect.equals(0x9, -0xa ^ -0x1);
  Expect.equals(0xfffffff6, -0xa ^ 0x0);
  Expect.equals(0xfffffff7, -0xa ^ 0x1);
  Expect.equals(0xfffffff4, -0xa ^ 0x2);
  Expect.equals(0xfffffffc, -0xa ^ 0xa);
  Expect.equals(0xff42de8b, -0xa ^ 0xbd217d);
  Expect.equals(0x123456e, -0xa ^ 0xfedcba98);
  Expect.equals(0x8, -0xa ^ 0xfffffffe);
  Expect.equals(0x9, -0xa ^ 0xffffffff);
  Expect.equals(0xfffffff6, -0xa ^ 0x100000000);
  Expect.equals(0xfffffffe, -0x2 ^ -0x100000000);
  Expect.equals(0xffffffff, -0x2 ^ -0xffffffff);
  Expect.equals(0xfffffffc, -0x2 ^ -0xfffffffe);
  Expect.equals(0xfedcba96, -0x2 ^ -0xfedcba98);
  Expect.equals(0xbd217d, -0x2 ^ -0xbd217d);
  Expect.equals(0x8, -0x2 ^ -0xa);
  Expect.equals(0x0, -0x2 ^ -0x2);
  Expect.equals(0x1, -0x2 ^ -0x1);
  Expect.equals(0xfffffffe, -0x2 ^ 0x0);
  Expect.equals(0xffffffff, -0x2 ^ 0x1);
  Expect.equals(0xfffffffc, -0x2 ^ 0x2);
  Expect.equals(0xfffffff4, -0x2 ^ 0xa);
  Expect.equals(0xff42de83, -0x2 ^ 0xbd217d);
  Expect.equals(0x1234566, -0x2 ^ 0xfedcba98);
  Expect.equals(0x0, -0x2 ^ 0xfffffffe);
  Expect.equals(0x1, -0x2 ^ 0xffffffff);
  Expect.equals(0xfffffffe, -0x2 ^ 0x100000000);
  Expect.equals(0xffffffff, -0x1 ^ -0x100000000);
  Expect.equals(0xfffffffe, -0x1 ^ -0xffffffff);
  Expect.equals(0xfffffffd, -0x1 ^ -0xfffffffe);
  Expect.equals(0xfedcba97, -0x1 ^ -0xfedcba98);
  Expect.equals(0xbd217c, -0x1 ^ -0xbd217d);
  Expect.equals(0x9, -0x1 ^ -0xa);
  Expect.equals(0x1, -0x1 ^ -0x2);
  Expect.equals(0x0, -0x1 ^ -0x1);
  Expect.equals(0xffffffff, -0x1 ^ 0x0);
  Expect.equals(0xfffffffe, -0x1 ^ 0x1);
  Expect.equals(0xfffffffd, -0x1 ^ 0x2);
  Expect.equals(0xfffffff5, -0x1 ^ 0xa);
  Expect.equals(0xff42de82, -0x1 ^ 0xbd217d);
  Expect.equals(0x1234567, -0x1 ^ 0xfedcba98);
  Expect.equals(0x1, -0x1 ^ 0xfffffffe);
  Expect.equals(0x0, -0x1 ^ 0xffffffff);
  Expect.equals(0xffffffff, -0x1 ^ 0x100000000);
  Expect.equals(0x0, 0x0 ^ -0x100000000);
  Expect.equals(0x1, 0x0 ^ -0xffffffff);
  Expect.equals(0x2, 0x0 ^ -0xfffffffe);
  Expect.equals(0x1234568, 0x0 ^ -0xfedcba98);
  Expect.equals(0xff42de83, 0x0 ^ -0xbd217d);
  Expect.equals(0xfffffff6, 0x0 ^ -0xa);
  Expect.equals(0xfffffffe, 0x0 ^ -0x2);
  Expect.equals(0xffffffff, 0x0 ^ -0x1);
  Expect.equals(0x0, 0x0 ^ 0x0);
  Expect.equals(0x1, 0x0 ^ 0x1);
  Expect.equals(0x2, 0x0 ^ 0x2);
  Expect.equals(0xa, 0x0 ^ 0xa);
  Expect.equals(0xbd217d, 0x0 ^ 0xbd217d);
  Expect.equals(0xfedcba98, 0x0 ^ 0xfedcba98);
  Expect.equals(0xfffffffe, 0x0 ^ 0xfffffffe);
  Expect.equals(0xffffffff, 0x0 ^ 0xffffffff);
  Expect.equals(0x0, 0x0 ^ 0x100000000);
  Expect.equals(0x1, 0x1 ^ -0x100000000);
  Expect.equals(0x0, 0x1 ^ -0xffffffff);
  Expect.equals(0x3, 0x1 ^ -0xfffffffe);
  Expect.equals(0x1234569, 0x1 ^ -0xfedcba98);
  Expect.equals(0xff42de82, 0x1 ^ -0xbd217d);
  Expect.equals(0xfffffff7, 0x1 ^ -0xa);
  Expect.equals(0xffffffff, 0x1 ^ -0x2);
  Expect.equals(0xfffffffe, 0x1 ^ -0x1);
  Expect.equals(0x1, 0x1 ^ 0x0);
  Expect.equals(0x0, 0x1 ^ 0x1);
  Expect.equals(0x3, 0x1 ^ 0x2);
  Expect.equals(0xb, 0x1 ^ 0xa);
  Expect.equals(0xbd217c, 0x1 ^ 0xbd217d);
  Expect.equals(0xfedcba99, 0x1 ^ 0xfedcba98);
  Expect.equals(0xffffffff, 0x1 ^ 0xfffffffe);
  Expect.equals(0xfffffffe, 0x1 ^ 0xffffffff);
  Expect.equals(0x1, 0x1 ^ 0x100000000);
  Expect.equals(0x2, 0x2 ^ -0x100000000);
  Expect.equals(0x3, 0x2 ^ -0xffffffff);
  Expect.equals(0x0, 0x2 ^ -0xfffffffe);
  Expect.equals(0x123456a, 0x2 ^ -0xfedcba98);
  Expect.equals(0xff42de81, 0x2 ^ -0xbd217d);
  Expect.equals(0xfffffff4, 0x2 ^ -0xa);
  Expect.equals(0xfffffffc, 0x2 ^ -0x2);
  Expect.equals(0xfffffffd, 0x2 ^ -0x1);
  Expect.equals(0x2, 0x2 ^ 0x0);
  Expect.equals(0x3, 0x2 ^ 0x1);
  Expect.equals(0x0, 0x2 ^ 0x2);
  Expect.equals(0x8, 0x2 ^ 0xa);
  Expect.equals(0xbd217f, 0x2 ^ 0xbd217d);
  Expect.equals(0xfedcba9a, 0x2 ^ 0xfedcba98);
  Expect.equals(0xfffffffc, 0x2 ^ 0xfffffffe);
  Expect.equals(0xfffffffd, 0x2 ^ 0xffffffff);
  Expect.equals(0x2, 0x2 ^ 0x100000000);
  Expect.equals(0xa, 0xa ^ -0x100000000);
  Expect.equals(0xb, 0xa ^ -0xffffffff);
  Expect.equals(0x8, 0xa ^ -0xfffffffe);
  Expect.equals(0x1234562, 0xa ^ -0xfedcba98);
  Expect.equals(0xff42de89, 0xa ^ -0xbd217d);
  Expect.equals(0xfffffffc, 0xa ^ -0xa);
  Expect.equals(0xfffffff4, 0xa ^ -0x2);
  Expect.equals(0xfffffff5, 0xa ^ -0x1);
  Expect.equals(0xa, 0xa ^ 0x0);
  Expect.equals(0xb, 0xa ^ 0x1);
  Expect.equals(0x8, 0xa ^ 0x2);
  Expect.equals(0x0, 0xa ^ 0xa);
  Expect.equals(0xbd2177, 0xa ^ 0xbd217d);
  Expect.equals(0xfedcba92, 0xa ^ 0xfedcba98);
  Expect.equals(0xfffffff4, 0xa ^ 0xfffffffe);
  Expect.equals(0xfffffff5, 0xa ^ 0xffffffff);
  Expect.equals(0xa, 0xa ^ 0x100000000);
  Expect.equals(0xbd217d, 0xbd217d ^ -0x100000000);
  Expect.equals(0xbd217c, 0xbd217d ^ -0xffffffff);
  Expect.equals(0xbd217f, 0xbd217d ^ -0xfffffffe);
  Expect.equals(0x19e6415, 0xbd217d ^ -0xfedcba98);
  Expect.equals(0xfffffffe, 0xbd217d ^ -0xbd217d);
  Expect.equals(0xff42de8b, 0xbd217d ^ -0xa);
  Expect.equals(0xff42de83, 0xbd217d ^ -0x2);
  Expect.equals(0xff42de82, 0xbd217d ^ -0x1);
  Expect.equals(0xbd217d, 0xbd217d ^ 0x0);
  Expect.equals(0xbd217c, 0xbd217d ^ 0x1);
  Expect.equals(0xbd217f, 0xbd217d ^ 0x2);
  Expect.equals(0xbd2177, 0xbd217d ^ 0xa);
  Expect.equals(0x0, 0xbd217d ^ 0xbd217d);
  Expect.equals(0xfe619be5, 0xbd217d ^ 0xfedcba98);
  Expect.equals(0xff42de83, 0xbd217d ^ 0xfffffffe);
  Expect.equals(0xff42de82, 0xbd217d ^ 0xffffffff);
  Expect.equals(0xbd217d, 0xbd217d ^ 0x100000000);
  Expect.equals(0xfedcba98, 0xfedcba98 ^ -0x100000000);
  Expect.equals(0xfedcba99, 0xfedcba98 ^ -0xffffffff);
  Expect.equals(0xfedcba9a, 0xfedcba98 ^ -0xfffffffe);
  Expect.equals(0xfffffff0, 0xfedcba98 ^ -0xfedcba98);
  Expect.equals(0x19e641b, 0xfedcba98 ^ -0xbd217d);
  Expect.equals(0x123456e, 0xfedcba98 ^ -0xa);
  Expect.equals(0x1234566, 0xfedcba98 ^ -0x2);
  Expect.equals(0x1234567, 0xfedcba98 ^ -0x1);
  Expect.equals(0xfedcba98, 0xfedcba98 ^ 0x0);
  Expect.equals(0xfedcba99, 0xfedcba98 ^ 0x1);
  Expect.equals(0xfedcba9a, 0xfedcba98 ^ 0x2);
  Expect.equals(0xfedcba92, 0xfedcba98 ^ 0xa);
  Expect.equals(0xfe619be5, 0xfedcba98 ^ 0xbd217d);
  Expect.equals(0x0, 0xfedcba98 ^ 0xfedcba98);
  Expect.equals(0x1234566, 0xfedcba98 ^ 0xfffffffe);
  Expect.equals(0x1234567, 0xfedcba98 ^ 0xffffffff);
  Expect.equals(0xfedcba98, 0xfedcba98 ^ 0x100000000);
  Expect.equals(0xfffffffe, 0xfffffffe ^ -0x100000000);
  Expect.equals(0xffffffff, 0xfffffffe ^ -0xffffffff);
  Expect.equals(0xfffffffc, 0xfffffffe ^ -0xfffffffe);
  Expect.equals(0xfedcba96, 0xfffffffe ^ -0xfedcba98);
  Expect.equals(0xbd217d, 0xfffffffe ^ -0xbd217d);
  Expect.equals(0x8, 0xfffffffe ^ -0xa);
  Expect.equals(0x0, 0xfffffffe ^ -0x2);
  Expect.equals(0x1, 0xfffffffe ^ -0x1);
  Expect.equals(0xfffffffe, 0xfffffffe ^ 0x0);
  Expect.equals(0xffffffff, 0xfffffffe ^ 0x1);
  Expect.equals(0xfffffffc, 0xfffffffe ^ 0x2);
  Expect.equals(0xfffffff4, 0xfffffffe ^ 0xa);
  Expect.equals(0xff42de83, 0xfffffffe ^ 0xbd217d);
  Expect.equals(0x1234566, 0xfffffffe ^ 0xfedcba98);
  Expect.equals(0x0, 0xfffffffe ^ 0xfffffffe);
  Expect.equals(0x1, 0xfffffffe ^ 0xffffffff);
  Expect.equals(0xfffffffe, 0xfffffffe ^ 0x100000000);
  Expect.equals(0xffffffff, 0xffffffff ^ -0x100000000);
  Expect.equals(0xfffffffe, 0xffffffff ^ -0xffffffff);
  Expect.equals(0xfffffffd, 0xffffffff ^ -0xfffffffe);
  Expect.equals(0xfedcba97, 0xffffffff ^ -0xfedcba98);
  Expect.equals(0xbd217c, 0xffffffff ^ -0xbd217d);
  Expect.equals(0x9, 0xffffffff ^ -0xa);
  Expect.equals(0x1, 0xffffffff ^ -0x2);
  Expect.equals(0x0, 0xffffffff ^ -0x1);
  Expect.equals(0xffffffff, 0xffffffff ^ 0x0);
  Expect.equals(0xfffffffe, 0xffffffff ^ 0x1);
  Expect.equals(0xfffffffd, 0xffffffff ^ 0x2);
  Expect.equals(0xfffffff5, 0xffffffff ^ 0xa);
  Expect.equals(0xff42de82, 0xffffffff ^ 0xbd217d);
  Expect.equals(0x1234567, 0xffffffff ^ 0xfedcba98);
  Expect.equals(0x1, 0xffffffff ^ 0xfffffffe);
  Expect.equals(0x0, 0xffffffff ^ 0xffffffff);
  Expect.equals(0xffffffff, 0xffffffff ^ 0x100000000);
  Expect.equals(0x0, 0x100000000 ^ -0x100000000);
  Expect.equals(0x1, 0x100000000 ^ -0xffffffff);
  Expect.equals(0x2, 0x100000000 ^ -0xfffffffe);
  Expect.equals(0x1234568, 0x100000000 ^ -0xfedcba98);
  Expect.equals(0xff42de83, 0x100000000 ^ -0xbd217d);
  Expect.equals(0xfffffff6, 0x100000000 ^ -0xa);
  Expect.equals(0xfffffffe, 0x100000000 ^ -0x2);
  Expect.equals(0xffffffff, 0x100000000 ^ -0x1);
  Expect.equals(0x0, 0x100000000 ^ 0x0);
  Expect.equals(0x1, 0x100000000 ^ 0x1);
  Expect.equals(0x2, 0x100000000 ^ 0x2);
  Expect.equals(0xa, 0x100000000 ^ 0xa);
  Expect.equals(0xbd217d, 0x100000000 ^ 0xbd217d);
  Expect.equals(0xfedcba98, 0x100000000 ^ 0xfedcba98);
  Expect.equals(0xfffffffe, 0x100000000 ^ 0xfffffffe);
  Expect.equals(0xffffffff, 0x100000000 ^ 0xffffffff);
  Expect.equals(0x0, 0x100000000 ^ 0x100000000);

  Expect.throws(() => -0x100000000 << -0x100000000);
  Expect.throws(() => -0x100000000 << -0xffffffff);
  Expect.throws(() => -0x100000000 << -0xfffffffe);
  Expect.throws(() => -0x100000000 << -0xfedcba98);
  Expect.throws(() => -0x100000000 << -0xbd217d);
  Expect.throws(() => -0x100000000 << -0xa);
  Expect.throws(() => -0x100000000 << -0x2);
  Expect.throws(() => -0x100000000 << -0x1);
  Expect.equals(0x0, -0x100000000 << 0x0);
  Expect.equals(0x0, -0x100000000 << 0x1);
  Expect.equals(0x0, -0x100000000 << 0x2);
  Expect.equals(0x0, -0x100000000 << 0xa);
  Expect.equals(0x0, -0x100000000 << 0xbd217d);
  Expect.equals(0x0, -0x100000000 << 0xfedcba98);
  Expect.equals(0x0, -0x100000000 << 0xfffffffe);
  Expect.equals(0x0, -0x100000000 << 0xffffffff);
  Expect.equals(0x0, -0x100000000 << 0x100000000);
  Expect.throws(() => -0xffffffff << -0x100000000);
  Expect.throws(() => -0xffffffff << -0xffffffff);
  Expect.throws(() => -0xffffffff << -0xfffffffe);
  Expect.throws(() => -0xffffffff << -0xfedcba98);
  Expect.throws(() => -0xffffffff << -0xbd217d);
  Expect.throws(() => -0xffffffff << -0xa);
  Expect.throws(() => -0xffffffff << -0x2);
  Expect.throws(() => -0xffffffff << -0x1);
  Expect.equals(0x1, -0xffffffff << 0x0);
  Expect.equals(0x2, -0xffffffff << 0x1);
  Expect.equals(0x4, -0xffffffff << 0x2);
  Expect.equals(0x400, -0xffffffff << 0xa);
  Expect.equals(0x0, -0xffffffff << 0xbd217d);
  Expect.equals(0x0, -0xffffffff << 0xfedcba98);
  Expect.equals(0x0, -0xffffffff << 0xfffffffe);
  Expect.equals(0x0, -0xffffffff << 0xffffffff);
  Expect.equals(0x0, -0xffffffff << 0x100000000);
  Expect.throws(() => -0xfffffffe << -0x100000000);
  Expect.throws(() => -0xfffffffe << -0xffffffff);
  Expect.throws(() => -0xfffffffe << -0xfffffffe);
  Expect.throws(() => -0xfffffffe << -0xfedcba98);
  Expect.throws(() => -0xfffffffe << -0xbd217d);
  Expect.throws(() => -0xfffffffe << -0xa);
  Expect.throws(() => -0xfffffffe << -0x2);
  Expect.throws(() => -0xfffffffe << -0x1);
  Expect.equals(0x2, -0xfffffffe << 0x0);
  Expect.equals(0x4, -0xfffffffe << 0x1);
  Expect.equals(0x8, -0xfffffffe << 0x2);
  Expect.equals(0x800, -0xfffffffe << 0xa);
  Expect.equals(0x0, -0xfffffffe << 0xbd217d);
  Expect.equals(0x0, -0xfffffffe << 0xfedcba98);
  Expect.equals(0x0, -0xfffffffe << 0xfffffffe);
  Expect.equals(0x0, -0xfffffffe << 0xffffffff);
  Expect.equals(0x0, -0xfffffffe << 0x100000000);
  Expect.throws(() => -0xfedcba98 << -0x100000000);
  Expect.throws(() => -0xfedcba98 << -0xffffffff);
  Expect.throws(() => -0xfedcba98 << -0xfffffffe);
  Expect.throws(() => -0xfedcba98 << -0xfedcba98);
  Expect.throws(() => -0xfedcba98 << -0xbd217d);
  Expect.throws(() => -0xfedcba98 << -0xa);
  Expect.throws(() => -0xfedcba98 << -0x2);
  Expect.throws(() => -0xfedcba98 << -0x1);
  Expect.equals(0x1234568, -0xfedcba98 << 0x0);
  Expect.equals(0x2468ad0, -0xfedcba98 << 0x1);
  Expect.equals(0x48d15a0, -0xfedcba98 << 0x2);
  Expect.equals(0x8d15a000, -0xfedcba98 << 0xa);
  Expect.equals(0x0, -0xfedcba98 << 0xbd217d);
  Expect.equals(0x0, -0xfedcba98 << 0xfedcba98);
  Expect.equals(0x0, -0xfedcba98 << 0xfffffffe);
  Expect.equals(0x0, -0xfedcba98 << 0xffffffff);
  Expect.equals(0x0, -0xfedcba98 << 0x100000000);
  Expect.throws(() => -0xbd217d << -0x100000000);
  Expect.throws(() => -0xbd217d << -0xffffffff);
  Expect.throws(() => -0xbd217d << -0xfffffffe);
  Expect.throws(() => -0xbd217d << -0xfedcba98);
  Expect.throws(() => -0xbd217d << -0xbd217d);
  Expect.throws(() => -0xbd217d << -0xa);
  Expect.throws(() => -0xbd217d << -0x2);
  Expect.throws(() => -0xbd217d << -0x1);
  Expect.equals(0xff42de83, -0xbd217d << 0x0);
  Expect.equals(0xfe85bd06, -0xbd217d << 0x1);
  Expect.equals(0xfd0b7a0c, -0xbd217d << 0x2);
  Expect.equals(0xb7a0c00, -0xbd217d << 0xa);
  Expect.equals(0x0, -0xbd217d << 0xbd217d);
  Expect.equals(0x0, -0xbd217d << 0xfedcba98);
  Expect.equals(0x0, -0xbd217d << 0xfffffffe);
  Expect.equals(0x0, -0xbd217d << 0xffffffff);
  Expect.equals(0x0, -0xbd217d << 0x100000000);
  Expect.throws(() => -0xa << -0x100000000);
  Expect.throws(() => -0xa << -0xffffffff);
  Expect.throws(() => -0xa << -0xfffffffe);
  Expect.throws(() => -0xa << -0xfedcba98);
  Expect.throws(() => -0xa << -0xbd217d);
  Expect.throws(() => -0xa << -0xa);
  Expect.throws(() => -0xa << -0x2);
  Expect.throws(() => -0xa << -0x1);
  Expect.equals(0xfffffff6, -0xa << 0x0);
  Expect.equals(0xffffffec, -0xa << 0x1);
  Expect.equals(0xffffffd8, -0xa << 0x2);
  Expect.equals(0xffffd800, -0xa << 0xa);
  Expect.equals(0x0, -0xa << 0xbd217d);
  Expect.equals(0x0, -0xa << 0xfedcba98);
  Expect.equals(0x0, -0xa << 0xfffffffe);
  Expect.equals(0x0, -0xa << 0xffffffff);
  Expect.equals(0x0, -0xa << 0x100000000);
  Expect.throws(() => -0x2 << -0x100000000);
  Expect.throws(() => -0x2 << -0xffffffff);
  Expect.throws(() => -0x2 << -0xfffffffe);
  Expect.throws(() => -0x2 << -0xfedcba98);
  Expect.throws(() => -0x2 << -0xbd217d);
  Expect.throws(() => -0x2 << -0xa);
  Expect.throws(() => -0x2 << -0x2);
  Expect.throws(() => -0x2 << -0x1);
  Expect.equals(0xfffffffe, -0x2 << 0x0);
  Expect.equals(0xfffffffc, -0x2 << 0x1);
  Expect.equals(0xfffffff8, -0x2 << 0x2);
  Expect.equals(0xfffff800, -0x2 << 0xa);
  Expect.equals(0x0, -0x2 << 0xbd217d);
  Expect.equals(0x0, -0x2 << 0xfedcba98);
  Expect.equals(0x0, -0x2 << 0xfffffffe);
  Expect.equals(0x0, -0x2 << 0xffffffff);
  Expect.equals(0x0, -0x2 << 0x100000000);
  Expect.throws(() => -0x1 << -0x100000000);
  Expect.throws(() => -0x1 << -0xffffffff);
  Expect.throws(() => -0x1 << -0xfffffffe);
  Expect.throws(() => -0x1 << -0xfedcba98);
  Expect.throws(() => -0x1 << -0xbd217d);
  Expect.throws(() => -0x1 << -0xa);
  Expect.throws(() => -0x1 << -0x2);
  Expect.throws(() => -0x1 << -0x1);
  Expect.equals(0xffffffff, -0x1 << 0x0);
  Expect.equals(0xfffffffe, -0x1 << 0x1);
  Expect.equals(0xfffffffc, -0x1 << 0x2);
  Expect.equals(0xfffffc00, -0x1 << 0xa);
  Expect.equals(0x0, -0x1 << 0xbd217d);
  Expect.equals(0x0, -0x1 << 0xfedcba98);
  Expect.equals(0x0, -0x1 << 0xfffffffe);
  Expect.equals(0x0, -0x1 << 0xffffffff);
  Expect.equals(0x0, -0x1 << 0x100000000);
  Expect.throws(() => 0x0 << -0x100000000);
  Expect.throws(() => 0x0 << -0xffffffff);
  Expect.throws(() => 0x0 << -0xfffffffe);
  Expect.throws(() => 0x0 << -0xfedcba98);
  Expect.throws(() => 0x0 << -0xbd217d);
  Expect.throws(() => 0x0 << -0xa);
  Expect.throws(() => 0x0 << -0x2);
  Expect.throws(() => 0x0 << -0x1);
  Expect.equals(0x0, 0x0 << 0x0);
  Expect.equals(0x0, 0x0 << 0x1);
  Expect.equals(0x0, 0x0 << 0x2);
  Expect.equals(0x0, 0x0 << 0xa);
  Expect.equals(0x0, 0x0 << 0xbd217d);
  Expect.equals(0x0, 0x0 << 0xfedcba98);
  Expect.equals(0x0, 0x0 << 0xfffffffe);
  Expect.equals(0x0, 0x0 << 0xffffffff);
  Expect.equals(0x0, 0x0 << 0x100000000);
  Expect.throws(() => 0x1 << -0x100000000);
  Expect.throws(() => 0x1 << -0xffffffff);
  Expect.throws(() => 0x1 << -0xfffffffe);
  Expect.throws(() => 0x1 << -0xfedcba98);
  Expect.throws(() => 0x1 << -0xbd217d);
  Expect.throws(() => 0x1 << -0xa);
  Expect.throws(() => 0x1 << -0x2);
  Expect.throws(() => 0x1 << -0x1);
  Expect.equals(0x1, 0x1 << 0x0);
  Expect.equals(0x2, 0x1 << 0x1);
  Expect.equals(0x4, 0x1 << 0x2);
  Expect.equals(0x400, 0x1 << 0xa);
  Expect.equals(0x0, 0x1 << 0xbd217d);
  Expect.equals(0x0, 0x1 << 0xfedcba98);
  Expect.equals(0x0, 0x1 << 0xfffffffe);
  Expect.equals(0x0, 0x1 << 0xffffffff);
  Expect.equals(0x0, 0x1 << 0x100000000);
  Expect.throws(() => 0x2 << -0x100000000);
  Expect.throws(() => 0x2 << -0xffffffff);
  Expect.throws(() => 0x2 << -0xfffffffe);
  Expect.throws(() => 0x2 << -0xfedcba98);
  Expect.throws(() => 0x2 << -0xbd217d);
  Expect.throws(() => 0x2 << -0xa);
  Expect.throws(() => 0x2 << -0x2);
  Expect.throws(() => 0x2 << -0x1);
  Expect.equals(0x2, 0x2 << 0x0);
  Expect.equals(0x4, 0x2 << 0x1);
  Expect.equals(0x8, 0x2 << 0x2);
  Expect.equals(0x800, 0x2 << 0xa);
  Expect.equals(0x0, 0x2 << 0xbd217d);
  Expect.equals(0x0, 0x2 << 0xfedcba98);
  Expect.equals(0x0, 0x2 << 0xfffffffe);
  Expect.equals(0x0, 0x2 << 0xffffffff);
  Expect.equals(0x0, 0x2 << 0x100000000);
  Expect.throws(() => 0xa << -0x100000000);
  Expect.throws(() => 0xa << -0xffffffff);
  Expect.throws(() => 0xa << -0xfffffffe);
  Expect.throws(() => 0xa << -0xfedcba98);
  Expect.throws(() => 0xa << -0xbd217d);
  Expect.throws(() => 0xa << -0xa);
  Expect.throws(() => 0xa << -0x2);
  Expect.throws(() => 0xa << -0x1);
  Expect.equals(0xa, 0xa << 0x0);
  Expect.equals(0x14, 0xa << 0x1);
  Expect.equals(0x28, 0xa << 0x2);
  Expect.equals(0x2800, 0xa << 0xa);
  Expect.equals(0x0, 0xa << 0xbd217d);
  Expect.equals(0x0, 0xa << 0xfedcba98);
  Expect.equals(0x0, 0xa << 0xfffffffe);
  Expect.equals(0x0, 0xa << 0xffffffff);
  Expect.equals(0x0, 0xa << 0x100000000);
  Expect.throws(() => 0xbd217d << -0x100000000);
  Expect.throws(() => 0xbd217d << -0xffffffff);
  Expect.throws(() => 0xbd217d << -0xfffffffe);
  Expect.throws(() => 0xbd217d << -0xfedcba98);
  Expect.throws(() => 0xbd217d << -0xbd217d);
  Expect.throws(() => 0xbd217d << -0xa);
  Expect.throws(() => 0xbd217d << -0x2);
  Expect.throws(() => 0xbd217d << -0x1);
  Expect.equals(0xbd217d, 0xbd217d << 0x0);
  Expect.equals(0x17a42fa, 0xbd217d << 0x1);
  Expect.equals(0x2f485f4, 0xbd217d << 0x2);
  Expect.equals(0xf485f400, 0xbd217d << 0xa);
  Expect.equals(0x0, 0xbd217d << 0xbd217d);
  Expect.equals(0x0, 0xbd217d << 0xfedcba98);
  Expect.equals(0x0, 0xbd217d << 0xfffffffe);
  Expect.equals(0x0, 0xbd217d << 0xffffffff);
  Expect.equals(0x0, 0xbd217d << 0x100000000);
  Expect.throws(() => 0xfedcba98 << -0x100000000);
  Expect.throws(() => 0xfedcba98 << -0xffffffff);
  Expect.throws(() => 0xfedcba98 << -0xfffffffe);
  Expect.throws(() => 0xfedcba98 << -0xfedcba98);
  Expect.throws(() => 0xfedcba98 << -0xbd217d);
  Expect.throws(() => 0xfedcba98 << -0xa);
  Expect.throws(() => 0xfedcba98 << -0x2);
  Expect.throws(() => 0xfedcba98 << -0x1);
  Expect.equals(0xfedcba98, 0xfedcba98 << 0x0);
  Expect.equals(0xfdb97530, 0xfedcba98 << 0x1);
  Expect.equals(0xfb72ea60, 0xfedcba98 << 0x2);
  Expect.equals(0x72ea6000, 0xfedcba98 << 0xa);
  Expect.equals(0x0, 0xfedcba98 << 0xbd217d);
  Expect.equals(0x0, 0xfedcba98 << 0xfedcba98);
  Expect.equals(0x0, 0xfedcba98 << 0xfffffffe);
  Expect.equals(0x0, 0xfedcba98 << 0xffffffff);
  Expect.equals(0x0, 0xfedcba98 << 0x100000000);
  Expect.throws(() => 0xfffffffe << -0x100000000);
  Expect.throws(() => 0xfffffffe << -0xffffffff);
  Expect.throws(() => 0xfffffffe << -0xfffffffe);
  Expect.throws(() => 0xfffffffe << -0xfedcba98);
  Expect.throws(() => 0xfffffffe << -0xbd217d);
  Expect.throws(() => 0xfffffffe << -0xa);
  Expect.throws(() => 0xfffffffe << -0x2);
  Expect.throws(() => 0xfffffffe << -0x1);
  Expect.equals(0xfffffffe, 0xfffffffe << 0x0);
  Expect.equals(0xfffffffc, 0xfffffffe << 0x1);
  Expect.equals(0xfffffff8, 0xfffffffe << 0x2);
  Expect.equals(0xfffff800, 0xfffffffe << 0xa);
  Expect.equals(0x0, 0xfffffffe << 0xbd217d);
  Expect.equals(0x0, 0xfffffffe << 0xfedcba98);
  Expect.equals(0x0, 0xfffffffe << 0xfffffffe);
  Expect.equals(0x0, 0xfffffffe << 0xffffffff);
  Expect.equals(0x0, 0xfffffffe << 0x100000000);
  Expect.throws(() => 0xffffffff << -0x100000000);
  Expect.throws(() => 0xffffffff << -0xffffffff);
  Expect.throws(() => 0xffffffff << -0xfffffffe);
  Expect.throws(() => 0xffffffff << -0xfedcba98);
  Expect.throws(() => 0xffffffff << -0xbd217d);
  Expect.throws(() => 0xffffffff << -0xa);
  Expect.throws(() => 0xffffffff << -0x2);
  Expect.throws(() => 0xffffffff << -0x1);
  Expect.equals(0xffffffff, 0xffffffff << 0x0);
  Expect.equals(0xfffffffe, 0xffffffff << 0x1);
  Expect.equals(0xfffffffc, 0xffffffff << 0x2);
  Expect.equals(0xfffffc00, 0xffffffff << 0xa);
  Expect.equals(0x0, 0xffffffff << 0xbd217d);
  Expect.equals(0x0, 0xffffffff << 0xfedcba98);
  Expect.equals(0x0, 0xffffffff << 0xfffffffe);
  Expect.equals(0x0, 0xffffffff << 0xffffffff);
  Expect.equals(0x0, 0xffffffff << 0x100000000);
  Expect.throws(() => 0x100000000 << -0x100000000);
  Expect.throws(() => 0x100000000 << -0xffffffff);
  Expect.throws(() => 0x100000000 << -0xfffffffe);
  Expect.throws(() => 0x100000000 << -0xfedcba98);
  Expect.throws(() => 0x100000000 << -0xbd217d);
  Expect.throws(() => 0x100000000 << -0xa);
  Expect.throws(() => 0x100000000 << -0x2);
  Expect.throws(() => 0x100000000 << -0x1);
  Expect.equals(0x0, 0x100000000 << 0x0);
  Expect.equals(0x0, 0x100000000 << 0x1);
  Expect.equals(0x0, 0x100000000 << 0x2);
  Expect.equals(0x0, 0x100000000 << 0xa);
  Expect.equals(0x0, 0x100000000 << 0xbd217d);
  Expect.equals(0x0, 0x100000000 << 0xfedcba98);
  Expect.equals(0x0, 0x100000000 << 0xfffffffe);
  Expect.equals(0x0, 0x100000000 << 0xffffffff);
  Expect.equals(0x0, 0x100000000 << 0x100000000);

  Expect.throws(() => -0x100000000 >> -0x100000000);
  Expect.throws(() => -0x100000000 >> -0xffffffff);
  Expect.throws(() => -0x100000000 >> -0xfffffffe);
  Expect.throws(() => -0x100000000 >> -0xfedcba98);
  Expect.throws(() => -0x100000000 >> -0xbd217d);
  Expect.throws(() => -0x100000000 >> -0xa);
  Expect.throws(() => -0x100000000 >> -0x2);
  Expect.throws(() => -0x100000000 >> -0x1);
  Expect.equals(0x0, -0x100000000 >> 0x0);
  Expect.equals(0x0, -0x100000000 >> 0x1);
  Expect.equals(0x0, -0x100000000 >> 0x2);
  Expect.equals(0x0, -0x100000000 >> 0xa);
  Expect.equals(0x0, -0x100000000 >> 0xbd217d);
  Expect.equals(0x0, -0x100000000 >> 0xfedcba98);
  Expect.equals(0x0, -0x100000000 >> 0xfffffffe);
  Expect.equals(0x0, -0x100000000 >> 0xffffffff);
  Expect.equals(0x0, -0x100000000 >> 0x100000000);
  Expect.throws(() => -0xffffffff >> -0x100000000);
  Expect.throws(() => -0xffffffff >> -0xffffffff);
  Expect.throws(() => -0xffffffff >> -0xfffffffe);
  Expect.throws(() => -0xffffffff >> -0xfedcba98);
  Expect.throws(() => -0xffffffff >> -0xbd217d);
  Expect.throws(() => -0xffffffff >> -0xa);
  Expect.throws(() => -0xffffffff >> -0x2);
  Expect.throws(() => -0xffffffff >> -0x1);
  Expect.equals(0x1, -0xffffffff >> 0x0);
  Expect.equals(0x0, -0xffffffff >> 0x1);
  Expect.equals(0x0, -0xffffffff >> 0x2);
  Expect.equals(0x0, -0xffffffff >> 0xa);
  Expect.equals(0x0, -0xffffffff >> 0xbd217d);
  Expect.equals(0x0, -0xffffffff >> 0xfedcba98);
  Expect.equals(0x0, -0xffffffff >> 0xfffffffe);
  Expect.equals(0x0, -0xffffffff >> 0xffffffff);
  Expect.equals(0x0, -0xffffffff >> 0x100000000);
  Expect.throws(() => -0xfffffffe >> -0x100000000);
  Expect.throws(() => -0xfffffffe >> -0xffffffff);
  Expect.throws(() => -0xfffffffe >> -0xfffffffe);
  Expect.throws(() => -0xfffffffe >> -0xfedcba98);
  Expect.throws(() => -0xfffffffe >> -0xbd217d);
  Expect.throws(() => -0xfffffffe >> -0xa);
  Expect.throws(() => -0xfffffffe >> -0x2);
  Expect.throws(() => -0xfffffffe >> -0x1);
  Expect.equals(0x2, -0xfffffffe >> 0x0);
  Expect.equals(0x1, -0xfffffffe >> 0x1);
  Expect.equals(0x0, -0xfffffffe >> 0x2);
  Expect.equals(0x0, -0xfffffffe >> 0xa);
  Expect.equals(0x0, -0xfffffffe >> 0xbd217d);
  Expect.equals(0x0, -0xfffffffe >> 0xfedcba98);
  Expect.equals(0x0, -0xfffffffe >> 0xfffffffe);
  Expect.equals(0x0, -0xfffffffe >> 0xffffffff);
  Expect.equals(0x0, -0xfffffffe >> 0x100000000);
  Expect.throws(() => -0xfedcba98 >> -0x100000000);
  Expect.throws(() => -0xfedcba98 >> -0xffffffff);
  Expect.throws(() => -0xfedcba98 >> -0xfffffffe);
  Expect.throws(() => -0xfedcba98 >> -0xfedcba98);
  Expect.throws(() => -0xfedcba98 >> -0xbd217d);
  Expect.throws(() => -0xfedcba98 >> -0xa);
  Expect.throws(() => -0xfedcba98 >> -0x2);
  Expect.throws(() => -0xfedcba98 >> -0x1);
  Expect.equals(0x1234568, -0xfedcba98 >> 0x0);
  Expect.equals(0x91a2b4, -0xfedcba98 >> 0x1);
  Expect.equals(0x48d15a, -0xfedcba98 >> 0x2);
  Expect.equals(0x48d1, -0xfedcba98 >> 0xa);
  Expect.equals(0x0, -0xfedcba98 >> 0xbd217d);
  Expect.equals(0x0, -0xfedcba98 >> 0xfedcba98);
  Expect.equals(0x0, -0xfedcba98 >> 0xfffffffe);
  Expect.equals(0x0, -0xfedcba98 >> 0xffffffff);
  Expect.equals(0x0, -0xfedcba98 >> 0x100000000);
  Expect.throws(() => -0xbd217d >> -0x100000000);
  Expect.throws(() => -0xbd217d >> -0xffffffff);
  Expect.throws(() => -0xbd217d >> -0xfffffffe);
  Expect.throws(() => -0xbd217d >> -0xfedcba98);
  Expect.throws(() => -0xbd217d >> -0xbd217d);
  Expect.throws(() => -0xbd217d >> -0xa);
  Expect.throws(() => -0xbd217d >> -0x2);
  Expect.throws(() => -0xbd217d >> -0x1);
  Expect.equals(0xff42de83, -0xbd217d >> 0x0);
  Expect.equals(0xffa16f41, -0xbd217d >> 0x1);
  Expect.equals(0xffd0b7a0, -0xbd217d >> 0x2);
  Expect.equals(0xffffd0b7, -0xbd217d >> 0xa);
  Expect.equals(0xffffffff, -0xbd217d >> 0xbd217d);
  Expect.equals(0xffffffff, -0xbd217d >> 0xfedcba98);
  Expect.equals(0xffffffff, -0xbd217d >> 0xfffffffe);
  Expect.equals(0xffffffff, -0xbd217d >> 0xffffffff);
  Expect.equals(0xffffffff, -0xbd217d >> 0x100000000);
  Expect.throws(() => -0xa >> -0x100000000);
  Expect.throws(() => -0xa >> -0xffffffff);
  Expect.throws(() => -0xa >> -0xfffffffe);
  Expect.throws(() => -0xa >> -0xfedcba98);
  Expect.throws(() => -0xa >> -0xbd217d);
  Expect.throws(() => -0xa >> -0xa);
  Expect.throws(() => -0xa >> -0x2);
  Expect.throws(() => -0xa >> -0x1);
  Expect.equals(0xfffffff6, -0xa >> 0x0);
  Expect.equals(0xfffffffb, -0xa >> 0x1);
  Expect.equals(0xfffffffd, -0xa >> 0x2);
  Expect.equals(0xffffffff, -0xa >> 0xa);
  Expect.equals(0xffffffff, -0xa >> 0xbd217d);
  Expect.equals(0xffffffff, -0xa >> 0xfedcba98);
  Expect.equals(0xffffffff, -0xa >> 0xfffffffe);
  Expect.equals(0xffffffff, -0xa >> 0xffffffff);
  Expect.equals(0xffffffff, -0xa >> 0x100000000);
  Expect.throws(() => -0x2 >> -0x100000000);
  Expect.throws(() => -0x2 >> -0xffffffff);
  Expect.throws(() => -0x2 >> -0xfffffffe);
  Expect.throws(() => -0x2 >> -0xfedcba98);
  Expect.throws(() => -0x2 >> -0xbd217d);
  Expect.throws(() => -0x2 >> -0xa);
  Expect.throws(() => -0x2 >> -0x2);
  Expect.throws(() => -0x2 >> -0x1);
  Expect.equals(0xfffffffe, -0x2 >> 0x0);
  Expect.equals(0xffffffff, -0x2 >> 0x1);
  Expect.equals(0xffffffff, -0x2 >> 0x2);
  Expect.equals(0xffffffff, -0x2 >> 0xa);
  Expect.equals(0xffffffff, -0x2 >> 0xbd217d);
  Expect.equals(0xffffffff, -0x2 >> 0xfedcba98);
  Expect.equals(0xffffffff, -0x2 >> 0xfffffffe);
  Expect.equals(0xffffffff, -0x2 >> 0xffffffff);
  Expect.equals(0xffffffff, -0x2 >> 0x100000000);
  Expect.throws(() => -0x1 >> -0x100000000);
  Expect.throws(() => -0x1 >> -0xffffffff);
  Expect.throws(() => -0x1 >> -0xfffffffe);
  Expect.throws(() => -0x1 >> -0xfedcba98);
  Expect.throws(() => -0x1 >> -0xbd217d);
  Expect.throws(() => -0x1 >> -0xa);
  Expect.throws(() => -0x1 >> -0x2);
  Expect.throws(() => -0x1 >> -0x1);
  Expect.equals(0xffffffff, -0x1 >> 0x0);
  Expect.equals(0xffffffff, -0x1 >> 0x1);
  Expect.equals(0xffffffff, -0x1 >> 0x2);
  Expect.equals(0xffffffff, -0x1 >> 0xa);
  Expect.equals(0xffffffff, -0x1 >> 0xbd217d);
  Expect.equals(0xffffffff, -0x1 >> 0xfedcba98);
  Expect.equals(0xffffffff, -0x1 >> 0xfffffffe);
  Expect.equals(0xffffffff, -0x1 >> 0xffffffff);
  Expect.equals(0xffffffff, -0x1 >> 0x100000000);
  Expect.throws(() => 0x0 >> -0x100000000);
  Expect.throws(() => 0x0 >> -0xffffffff);
  Expect.throws(() => 0x0 >> -0xfffffffe);
  Expect.throws(() => 0x0 >> -0xfedcba98);
  Expect.throws(() => 0x0 >> -0xbd217d);
  Expect.throws(() => 0x0 >> -0xa);
  Expect.throws(() => 0x0 >> -0x2);
  Expect.throws(() => 0x0 >> -0x1);
  Expect.equals(0x0, 0x0 >> 0x0);
  Expect.equals(0x0, 0x0 >> 0x1);
  Expect.equals(0x0, 0x0 >> 0x2);
  Expect.equals(0x0, 0x0 >> 0xa);
  Expect.equals(0x0, 0x0 >> 0xbd217d);
  Expect.equals(0x0, 0x0 >> 0xfedcba98);
  Expect.equals(0x0, 0x0 >> 0xfffffffe);
  Expect.equals(0x0, 0x0 >> 0xffffffff);
  Expect.equals(0x0, 0x0 >> 0x100000000);
  Expect.throws(() => 0x1 >> -0x100000000);
  Expect.throws(() => 0x1 >> -0xffffffff);
  Expect.throws(() => 0x1 >> -0xfffffffe);
  Expect.throws(() => 0x1 >> -0xfedcba98);
  Expect.throws(() => 0x1 >> -0xbd217d);
  Expect.throws(() => 0x1 >> -0xa);
  Expect.throws(() => 0x1 >> -0x2);
  Expect.throws(() => 0x1 >> -0x1);
  Expect.equals(0x1, 0x1 >> 0x0);
  Expect.equals(0x0, 0x1 >> 0x1);
  Expect.equals(0x0, 0x1 >> 0x2);
  Expect.equals(0x0, 0x1 >> 0xa);
  Expect.equals(0x0, 0x1 >> 0xbd217d);
  Expect.equals(0x0, 0x1 >> 0xfedcba98);
  Expect.equals(0x0, 0x1 >> 0xfffffffe);
  Expect.equals(0x0, 0x1 >> 0xffffffff);
  Expect.equals(0x0, 0x1 >> 0x100000000);
  Expect.throws(() => 0x2 >> -0x100000000);
  Expect.throws(() => 0x2 >> -0xffffffff);
  Expect.throws(() => 0x2 >> -0xfffffffe);
  Expect.throws(() => 0x2 >> -0xfedcba98);
  Expect.throws(() => 0x2 >> -0xbd217d);
  Expect.throws(() => 0x2 >> -0xa);
  Expect.throws(() => 0x2 >> -0x2);
  Expect.throws(() => 0x2 >> -0x1);
  Expect.equals(0x2, 0x2 >> 0x0);
  Expect.equals(0x1, 0x2 >> 0x1);
  Expect.equals(0x0, 0x2 >> 0x2);
  Expect.equals(0x0, 0x2 >> 0xa);
  Expect.equals(0x0, 0x2 >> 0xbd217d);
  Expect.equals(0x0, 0x2 >> 0xfedcba98);
  Expect.equals(0x0, 0x2 >> 0xfffffffe);
  Expect.equals(0x0, 0x2 >> 0xffffffff);
  Expect.equals(0x0, 0x2 >> 0x100000000);
  Expect.throws(() => 0xa >> -0x100000000);
  Expect.throws(() => 0xa >> -0xffffffff);
  Expect.throws(() => 0xa >> -0xfffffffe);
  Expect.throws(() => 0xa >> -0xfedcba98);
  Expect.throws(() => 0xa >> -0xbd217d);
  Expect.throws(() => 0xa >> -0xa);
  Expect.throws(() => 0xa >> -0x2);
  Expect.throws(() => 0xa >> -0x1);
  Expect.equals(0xa, 0xa >> 0x0);
  Expect.equals(0x5, 0xa >> 0x1);
  Expect.equals(0x2, 0xa >> 0x2);
  Expect.equals(0x0, 0xa >> 0xa);
  Expect.equals(0x0, 0xa >> 0xbd217d);
  Expect.equals(0x0, 0xa >> 0xfedcba98);
  Expect.equals(0x0, 0xa >> 0xfffffffe);
  Expect.equals(0x0, 0xa >> 0xffffffff);
  Expect.equals(0x0, 0xa >> 0x100000000);
  Expect.throws(() => 0xbd217d >> -0x100000000);
  Expect.throws(() => 0xbd217d >> -0xffffffff);
  Expect.throws(() => 0xbd217d >> -0xfffffffe);
  Expect.throws(() => 0xbd217d >> -0xfedcba98);
  Expect.throws(() => 0xbd217d >> -0xbd217d);
  Expect.throws(() => 0xbd217d >> -0xa);
  Expect.throws(() => 0xbd217d >> -0x2);
  Expect.throws(() => 0xbd217d >> -0x1);
  Expect.equals(0xbd217d, 0xbd217d >> 0x0);
  Expect.equals(0x5e90be, 0xbd217d >> 0x1);
  Expect.equals(0x2f485f, 0xbd217d >> 0x2);
  Expect.equals(0x2f48, 0xbd217d >> 0xa);
  Expect.equals(0x0, 0xbd217d >> 0xbd217d);
  Expect.equals(0x0, 0xbd217d >> 0xfedcba98);
  Expect.equals(0x0, 0xbd217d >> 0xfffffffe);
  Expect.equals(0x0, 0xbd217d >> 0xffffffff);
  Expect.equals(0x0, 0xbd217d >> 0x100000000);
  Expect.throws(() => 0xfedcba98 >> -0x100000000);
  Expect.throws(() => 0xfedcba98 >> -0xffffffff);
  Expect.throws(() => 0xfedcba98 >> -0xfffffffe);
  Expect.throws(() => 0xfedcba98 >> -0xfedcba98);
  Expect.throws(() => 0xfedcba98 >> -0xbd217d);
  Expect.throws(() => 0xfedcba98 >> -0xa);
  Expect.throws(() => 0xfedcba98 >> -0x2);
  Expect.throws(() => 0xfedcba98 >> -0x1);
  Expect.equals(0xfedcba98, 0xfedcba98 >> 0x0);
  Expect.equals(0x7f6e5d4c, 0xfedcba98 >> 0x1);
  Expect.equals(0x3fb72ea6, 0xfedcba98 >> 0x2);
  Expect.equals(0x3fb72e, 0xfedcba98 >> 0xa);
  Expect.equals(0x0, 0xfedcba98 >> 0xbd217d);
  Expect.equals(0x0, 0xfedcba98 >> 0xfedcba98);
  Expect.equals(0x0, 0xfedcba98 >> 0xfffffffe);
  Expect.equals(0x0, 0xfedcba98 >> 0xffffffff);
  Expect.equals(0x0, 0xfedcba98 >> 0x100000000);
  Expect.throws(() => 0xfffffffe >> -0x100000000);
  Expect.throws(() => 0xfffffffe >> -0xffffffff);
  Expect.throws(() => 0xfffffffe >> -0xfffffffe);
  Expect.throws(() => 0xfffffffe >> -0xfedcba98);
  Expect.throws(() => 0xfffffffe >> -0xbd217d);
  Expect.throws(() => 0xfffffffe >> -0xa);
  Expect.throws(() => 0xfffffffe >> -0x2);
  Expect.throws(() => 0xfffffffe >> -0x1);
  Expect.equals(0xfffffffe, 0xfffffffe >> 0x0);
  Expect.equals(0x7fffffff, 0xfffffffe >> 0x1);
  Expect.equals(0x3fffffff, 0xfffffffe >> 0x2);
  Expect.equals(0x3fffff, 0xfffffffe >> 0xa);
  Expect.equals(0x0, 0xfffffffe >> 0xbd217d);
  Expect.equals(0x0, 0xfffffffe >> 0xfedcba98);
  Expect.equals(0x0, 0xfffffffe >> 0xfffffffe);
  Expect.equals(0x0, 0xfffffffe >> 0xffffffff);
  Expect.equals(0x0, 0xfffffffe >> 0x100000000);
  Expect.throws(() => 0xffffffff >> -0x100000000);
  Expect.throws(() => 0xffffffff >> -0xffffffff);
  Expect.throws(() => 0xffffffff >> -0xfffffffe);
  Expect.throws(() => 0xffffffff >> -0xfedcba98);
  Expect.throws(() => 0xffffffff >> -0xbd217d);
  Expect.throws(() => 0xffffffff >> -0xa);
  Expect.throws(() => 0xffffffff >> -0x2);
  Expect.throws(() => 0xffffffff >> -0x1);
  Expect.equals(0xffffffff, 0xffffffff >> 0x0);
  Expect.equals(0x7fffffff, 0xffffffff >> 0x1);
  Expect.equals(0x3fffffff, 0xffffffff >> 0x2);
  Expect.equals(0x3fffff, 0xffffffff >> 0xa);
  Expect.equals(0x0, 0xffffffff >> 0xbd217d);
  Expect.equals(0x0, 0xffffffff >> 0xfedcba98);
  Expect.equals(0x0, 0xffffffff >> 0xfffffffe);
  Expect.equals(0x0, 0xffffffff >> 0xffffffff);
  Expect.equals(0x0, 0xffffffff >> 0x100000000);
  Expect.throws(() => 0x100000000 >> -0x100000000);
  Expect.throws(() => 0x100000000 >> -0xffffffff);
  Expect.throws(() => 0x100000000 >> -0xfffffffe);
  Expect.throws(() => 0x100000000 >> -0xfedcba98);
  Expect.throws(() => 0x100000000 >> -0xbd217d);
  Expect.throws(() => 0x100000000 >> -0xa);
  Expect.throws(() => 0x100000000 >> -0x2);
  Expect.throws(() => 0x100000000 >> -0x1);
  Expect.equals(0x0, 0x100000000 >> 0x0);
  Expect.equals(0x0, 0x100000000 >> 0x1);
  Expect.equals(0x0, 0x100000000 >> 0x2);
  Expect.equals(0x0, 0x100000000 >> 0xa);
  Expect.equals(0x0, 0x100000000 >> 0xbd217d);
  Expect.equals(0x0, 0x100000000 >> 0xfedcba98);
  Expect.equals(0x0, 0x100000000 >> 0xfffffffe);
  Expect.equals(0x0, 0x100000000 >> 0xffffffff);
  Expect.equals(0x0, 0x100000000 >> 0x100000000);

  Expect.throws(() => -0x100000000 >>> -0x100000000);
  Expect.throws(() => -0x100000000 >>> -0xffffffff);
  Expect.throws(() => -0x100000000 >>> -0xfffffffe);
  Expect.throws(() => -0x100000000 >>> -0xfedcba98);
  Expect.throws(() => -0x100000000 >>> -0xbd217d);
  Expect.throws(() => -0x100000000 >>> -0xa);
  Expect.throws(() => -0x100000000 >>> -0x2);
  Expect.throws(() => -0x100000000 >>> -0x1);
  Expect.equals(0x0, -0x100000000 >>> 0x0);
  Expect.equals(0x0, -0x100000000 >>> 0x1);
  Expect.equals(0x0, -0x100000000 >>> 0x2);
  Expect.equals(0x0, -0x100000000 >>> 0xa);
  Expect.equals(0x0, -0x100000000 >>> 0xbd217d);
  Expect.equals(0x0, -0x100000000 >>> 0xfedcba98);
  Expect.equals(0x0, -0x100000000 >>> 0xfffffffe);
  Expect.equals(0x0, -0x100000000 >>> 0xffffffff);
  Expect.equals(0x0, -0x100000000 >>> 0x100000000);
  Expect.throws(() => -0xffffffff >>> -0x100000000);
  Expect.throws(() => -0xffffffff >>> -0xffffffff);
  Expect.throws(() => -0xffffffff >>> -0xfffffffe);
  Expect.throws(() => -0xffffffff >>> -0xfedcba98);
  Expect.throws(() => -0xffffffff >>> -0xbd217d);
  Expect.throws(() => -0xffffffff >>> -0xa);
  Expect.throws(() => -0xffffffff >>> -0x2);
  Expect.throws(() => -0xffffffff >>> -0x1);
  Expect.equals(0x1, -0xffffffff >>> 0x0);
  Expect.equals(0x0, -0xffffffff >>> 0x1);
  Expect.equals(0x0, -0xffffffff >>> 0x2);
  Expect.equals(0x0, -0xffffffff >>> 0xa);
  Expect.equals(0x0, -0xffffffff >>> 0xbd217d);
  Expect.equals(0x0, -0xffffffff >>> 0xfedcba98);
  Expect.equals(0x0, -0xffffffff >>> 0xfffffffe);
  Expect.equals(0x0, -0xffffffff >>> 0xffffffff);
  Expect.equals(0x0, -0xffffffff >>> 0x100000000);
  Expect.throws(() => -0xfffffffe >>> -0x100000000);
  Expect.throws(() => -0xfffffffe >>> -0xffffffff);
  Expect.throws(() => -0xfffffffe >>> -0xfffffffe);
  Expect.throws(() => -0xfffffffe >>> -0xfedcba98);
  Expect.throws(() => -0xfffffffe >>> -0xbd217d);
  Expect.throws(() => -0xfffffffe >>> -0xa);
  Expect.throws(() => -0xfffffffe >>> -0x2);
  Expect.throws(() => -0xfffffffe >>> -0x1);
  Expect.equals(0x2, -0xfffffffe >>> 0x0);
  Expect.equals(0x1, -0xfffffffe >>> 0x1);
  Expect.equals(0x0, -0xfffffffe >>> 0x2);
  Expect.equals(0x0, -0xfffffffe >>> 0xa);
  Expect.equals(0x0, -0xfffffffe >>> 0xbd217d);
  Expect.equals(0x0, -0xfffffffe >>> 0xfedcba98);
  Expect.equals(0x0, -0xfffffffe >>> 0xfffffffe);
  Expect.equals(0x0, -0xfffffffe >>> 0xffffffff);
  Expect.equals(0x0, -0xfffffffe >>> 0x100000000);
  Expect.throws(() => -0xfedcba98 >>> -0x100000000);
  Expect.throws(() => -0xfedcba98 >>> -0xffffffff);
  Expect.throws(() => -0xfedcba98 >>> -0xfffffffe);
  Expect.throws(() => -0xfedcba98 >>> -0xfedcba98);
  Expect.throws(() => -0xfedcba98 >>> -0xbd217d);
  Expect.throws(() => -0xfedcba98 >>> -0xa);
  Expect.throws(() => -0xfedcba98 >>> -0x2);
  Expect.throws(() => -0xfedcba98 >>> -0x1);
  Expect.equals(0x1234568, -0xfedcba98 >>> 0x0);
  Expect.equals(0x91a2b4, -0xfedcba98 >>> 0x1);
  Expect.equals(0x48d15a, -0xfedcba98 >>> 0x2);
  Expect.equals(0x48d1, -0xfedcba98 >>> 0xa);
  Expect.equals(0x0, -0xfedcba98 >>> 0xbd217d);
  Expect.equals(0x0, -0xfedcba98 >>> 0xfedcba98);
  Expect.equals(0x0, -0xfedcba98 >>> 0xfffffffe);
  Expect.equals(0x0, -0xfedcba98 >>> 0xffffffff);
  Expect.equals(0x0, -0xfedcba98 >>> 0x100000000);
  Expect.throws(() => -0xbd217d >>> -0x100000000);
  Expect.throws(() => -0xbd217d >>> -0xffffffff);
  Expect.throws(() => -0xbd217d >>> -0xfffffffe);
  Expect.throws(() => -0xbd217d >>> -0xfedcba98);
  Expect.throws(() => -0xbd217d >>> -0xbd217d);
  Expect.throws(() => -0xbd217d >>> -0xa);
  Expect.throws(() => -0xbd217d >>> -0x2);
  Expect.throws(() => -0xbd217d >>> -0x1);
  Expect.equals(0xff42de83, -0xbd217d >>> 0x0);
  Expect.equals(0x7fa16f41, -0xbd217d >>> 0x1);
  Expect.equals(0x3fd0b7a0, -0xbd217d >>> 0x2);
  Expect.equals(0x3fd0b7, -0xbd217d >>> 0xa);
  Expect.equals(0x0, -0xbd217d >>> 0xbd217d);
  Expect.equals(0x0, -0xbd217d >>> 0xfedcba98);
  Expect.equals(0x0, -0xbd217d >>> 0xfffffffe);
  Expect.equals(0x0, -0xbd217d >>> 0xffffffff);
  Expect.equals(0x0, -0xbd217d >>> 0x100000000);
  Expect.throws(() => -0xa >>> -0x100000000);
  Expect.throws(() => -0xa >>> -0xffffffff);
  Expect.throws(() => -0xa >>> -0xfffffffe);
  Expect.throws(() => -0xa >>> -0xfedcba98);
  Expect.throws(() => -0xa >>> -0xbd217d);
  Expect.throws(() => -0xa >>> -0xa);
  Expect.throws(() => -0xa >>> -0x2);
  Expect.throws(() => -0xa >>> -0x1);
  Expect.equals(0xfffffff6, -0xa >>> 0x0);
  Expect.equals(0x7ffffffb, -0xa >>> 0x1);
  Expect.equals(0x3ffffffd, -0xa >>> 0x2);
  Expect.equals(0x3fffff, -0xa >>> 0xa);
  Expect.equals(0x0, -0xa >>> 0xbd217d);
  Expect.equals(0x0, -0xa >>> 0xfedcba98);
  Expect.equals(0x0, -0xa >>> 0xfffffffe);
  Expect.equals(0x0, -0xa >>> 0xffffffff);
  Expect.equals(0x0, -0xa >>> 0x100000000);
  Expect.throws(() => -0x2 >>> -0x100000000);
  Expect.throws(() => -0x2 >>> -0xffffffff);
  Expect.throws(() => -0x2 >>> -0xfffffffe);
  Expect.throws(() => -0x2 >>> -0xfedcba98);
  Expect.throws(() => -0x2 >>> -0xbd217d);
  Expect.throws(() => -0x2 >>> -0xa);
  Expect.throws(() => -0x2 >>> -0x2);
  Expect.throws(() => -0x2 >>> -0x1);
  Expect.equals(0xfffffffe, -0x2 >>> 0x0);
  Expect.equals(0x7fffffff, -0x2 >>> 0x1);
  Expect.equals(0x3fffffff, -0x2 >>> 0x2);
  Expect.equals(0x3fffff, -0x2 >>> 0xa);
  Expect.equals(0x0, -0x2 >>> 0xbd217d);
  Expect.equals(0x0, -0x2 >>> 0xfedcba98);
  Expect.equals(0x0, -0x2 >>> 0xfffffffe);
  Expect.equals(0x0, -0x2 >>> 0xffffffff);
  Expect.equals(0x0, -0x2 >>> 0x100000000);
  Expect.throws(() => -0x1 >>> -0x100000000);
  Expect.throws(() => -0x1 >>> -0xffffffff);
  Expect.throws(() => -0x1 >>> -0xfffffffe);
  Expect.throws(() => -0x1 >>> -0xfedcba98);
  Expect.throws(() => -0x1 >>> -0xbd217d);
  Expect.throws(() => -0x1 >>> -0xa);
  Expect.throws(() => -0x1 >>> -0x2);
  Expect.throws(() => -0x1 >>> -0x1);
  Expect.equals(0xffffffff, -0x1 >>> 0x0);
  Expect.equals(0x7fffffff, -0x1 >>> 0x1);
  Expect.equals(0x3fffffff, -0x1 >>> 0x2);
  Expect.equals(0x3fffff, -0x1 >>> 0xa);
  Expect.equals(0x0, -0x1 >>> 0xbd217d);
  Expect.equals(0x0, -0x1 >>> 0xfedcba98);
  Expect.equals(0x0, -0x1 >>> 0xfffffffe);
  Expect.equals(0x0, -0x1 >>> 0xffffffff);
  Expect.equals(0x0, -0x1 >>> 0x100000000);
  Expect.throws(() => 0x0 >>> -0x100000000);
  Expect.throws(() => 0x0 >>> -0xffffffff);
  Expect.throws(() => 0x0 >>> -0xfffffffe);
  Expect.throws(() => 0x0 >>> -0xfedcba98);
  Expect.throws(() => 0x0 >>> -0xbd217d);
  Expect.throws(() => 0x0 >>> -0xa);
  Expect.throws(() => 0x0 >>> -0x2);
  Expect.throws(() => 0x0 >>> -0x1);
  Expect.equals(0x0, 0x0 >>> 0x0);
  Expect.equals(0x0, 0x0 >>> 0x1);
  Expect.equals(0x0, 0x0 >>> 0x2);
  Expect.equals(0x0, 0x0 >>> 0xa);
  Expect.equals(0x0, 0x0 >>> 0xbd217d);
  Expect.equals(0x0, 0x0 >>> 0xfedcba98);
  Expect.equals(0x0, 0x0 >>> 0xfffffffe);
  Expect.equals(0x0, 0x0 >>> 0xffffffff);
  Expect.equals(0x0, 0x0 >>> 0x100000000);
  Expect.throws(() => 0x1 >>> -0x100000000);
  Expect.throws(() => 0x1 >>> -0xffffffff);
  Expect.throws(() => 0x1 >>> -0xfffffffe);
  Expect.throws(() => 0x1 >>> -0xfedcba98);
  Expect.throws(() => 0x1 >>> -0xbd217d);
  Expect.throws(() => 0x1 >>> -0xa);
  Expect.throws(() => 0x1 >>> -0x2);
  Expect.throws(() => 0x1 >>> -0x1);
  Expect.equals(0x1, 0x1 >>> 0x0);
  Expect.equals(0x0, 0x1 >>> 0x1);
  Expect.equals(0x0, 0x1 >>> 0x2);
  Expect.equals(0x0, 0x1 >>> 0xa);
  Expect.equals(0x0, 0x1 >>> 0xbd217d);
  Expect.equals(0x0, 0x1 >>> 0xfedcba98);
  Expect.equals(0x0, 0x1 >>> 0xfffffffe);
  Expect.equals(0x0, 0x1 >>> 0xffffffff);
  Expect.equals(0x0, 0x1 >>> 0x100000000);
  Expect.throws(() => 0x2 >>> -0x100000000);
  Expect.throws(() => 0x2 >>> -0xffffffff);
  Expect.throws(() => 0x2 >>> -0xfffffffe);
  Expect.throws(() => 0x2 >>> -0xfedcba98);
  Expect.throws(() => 0x2 >>> -0xbd217d);
  Expect.throws(() => 0x2 >>> -0xa);
  Expect.throws(() => 0x2 >>> -0x2);
  Expect.throws(() => 0x2 >>> -0x1);
  Expect.equals(0x2, 0x2 >>> 0x0);
  Expect.equals(0x1, 0x2 >>> 0x1);
  Expect.equals(0x0, 0x2 >>> 0x2);
  Expect.equals(0x0, 0x2 >>> 0xa);
  Expect.equals(0x0, 0x2 >>> 0xbd217d);
  Expect.equals(0x0, 0x2 >>> 0xfedcba98);
  Expect.equals(0x0, 0x2 >>> 0xfffffffe);
  Expect.equals(0x0, 0x2 >>> 0xffffffff);
  Expect.equals(0x0, 0x2 >>> 0x100000000);
  Expect.throws(() => 0xa >>> -0x100000000);
  Expect.throws(() => 0xa >>> -0xffffffff);
  Expect.throws(() => 0xa >>> -0xfffffffe);
  Expect.throws(() => 0xa >>> -0xfedcba98);
  Expect.throws(() => 0xa >>> -0xbd217d);
  Expect.throws(() => 0xa >>> -0xa);
  Expect.throws(() => 0xa >>> -0x2);
  Expect.throws(() => 0xa >>> -0x1);
  Expect.equals(0xa, 0xa >>> 0x0);
  Expect.equals(0x5, 0xa >>> 0x1);
  Expect.equals(0x2, 0xa >>> 0x2);
  Expect.equals(0x0, 0xa >>> 0xa);
  Expect.equals(0x0, 0xa >>> 0xbd217d);
  Expect.equals(0x0, 0xa >>> 0xfedcba98);
  Expect.equals(0x0, 0xa >>> 0xfffffffe);
  Expect.equals(0x0, 0xa >>> 0xffffffff);
  Expect.equals(0x0, 0xa >>> 0x100000000);
  Expect.throws(() => 0xbd217d >>> -0x100000000);
  Expect.throws(() => 0xbd217d >>> -0xffffffff);
  Expect.throws(() => 0xbd217d >>> -0xfffffffe);
  Expect.throws(() => 0xbd217d >>> -0xfedcba98);
  Expect.throws(() => 0xbd217d >>> -0xbd217d);
  Expect.throws(() => 0xbd217d >>> -0xa);
  Expect.throws(() => 0xbd217d >>> -0x2);
  Expect.throws(() => 0xbd217d >>> -0x1);
  Expect.equals(0xbd217d, 0xbd217d >>> 0x0);
  Expect.equals(0x5e90be, 0xbd217d >>> 0x1);
  Expect.equals(0x2f485f, 0xbd217d >>> 0x2);
  Expect.equals(0x2f48, 0xbd217d >>> 0xa);
  Expect.equals(0x0, 0xbd217d >>> 0xbd217d);
  Expect.equals(0x0, 0xbd217d >>> 0xfedcba98);
  Expect.equals(0x0, 0xbd217d >>> 0xfffffffe);
  Expect.equals(0x0, 0xbd217d >>> 0xffffffff);
  Expect.equals(0x0, 0xbd217d >>> 0x100000000);
  Expect.throws(() => 0xfedcba98 >>> -0x100000000);
  Expect.throws(() => 0xfedcba98 >>> -0xffffffff);
  Expect.throws(() => 0xfedcba98 >>> -0xfffffffe);
  Expect.throws(() => 0xfedcba98 >>> -0xfedcba98);
  Expect.throws(() => 0xfedcba98 >>> -0xbd217d);
  Expect.throws(() => 0xfedcba98 >>> -0xa);
  Expect.throws(() => 0xfedcba98 >>> -0x2);
  Expect.throws(() => 0xfedcba98 >>> -0x1);
  Expect.equals(0xfedcba98, 0xfedcba98 >>> 0x0);
  Expect.equals(0x7f6e5d4c, 0xfedcba98 >>> 0x1);
  Expect.equals(0x3fb72ea6, 0xfedcba98 >>> 0x2);
  Expect.equals(0x3fb72e, 0xfedcba98 >>> 0xa);
  Expect.equals(0x0, 0xfedcba98 >>> 0xbd217d);
  Expect.equals(0x0, 0xfedcba98 >>> 0xfedcba98);
  Expect.equals(0x0, 0xfedcba98 >>> 0xfffffffe);
  Expect.equals(0x0, 0xfedcba98 >>> 0xffffffff);
  Expect.equals(0x0, 0xfedcba98 >>> 0x100000000);
  Expect.throws(() => 0xfffffffe >>> -0x100000000);
  Expect.throws(() => 0xfffffffe >>> -0xffffffff);
  Expect.throws(() => 0xfffffffe >>> -0xfffffffe);
  Expect.throws(() => 0xfffffffe >>> -0xfedcba98);
  Expect.throws(() => 0xfffffffe >>> -0xbd217d);
  Expect.throws(() => 0xfffffffe >>> -0xa);
  Expect.throws(() => 0xfffffffe >>> -0x2);
  Expect.throws(() => 0xfffffffe >>> -0x1);
  Expect.equals(0xfffffffe, 0xfffffffe >>> 0x0);
  Expect.equals(0x7fffffff, 0xfffffffe >>> 0x1);
  Expect.equals(0x3fffffff, 0xfffffffe >>> 0x2);
  Expect.equals(0x3fffff, 0xfffffffe >>> 0xa);
  Expect.equals(0x0, 0xfffffffe >>> 0xbd217d);
  Expect.equals(0x0, 0xfffffffe >>> 0xfedcba98);
  Expect.equals(0x0, 0xfffffffe >>> 0xfffffffe);
  Expect.equals(0x0, 0xfffffffe >>> 0xffffffff);
  Expect.equals(0x0, 0xfffffffe >>> 0x100000000);
  Expect.throws(() => 0xffffffff >>> -0x100000000);
  Expect.throws(() => 0xffffffff >>> -0xffffffff);
  Expect.throws(() => 0xffffffff >>> -0xfffffffe);
  Expect.throws(() => 0xffffffff >>> -0xfedcba98);
  Expect.throws(() => 0xffffffff >>> -0xbd217d);
  Expect.throws(() => 0xffffffff >>> -0xa);
  Expect.throws(() => 0xffffffff >>> -0x2);
  Expect.throws(() => 0xffffffff >>> -0x1);
  Expect.equals(0xffffffff, 0xffffffff >>> 0x0);
  Expect.equals(0x7fffffff, 0xffffffff >>> 0x1);
  Expect.equals(0x3fffffff, 0xffffffff >>> 0x2);
  Expect.equals(0x3fffff, 0xffffffff >>> 0xa);
  Expect.equals(0x0, 0xffffffff >>> 0xbd217d);
  Expect.equals(0x0, 0xffffffff >>> 0xfedcba98);
  Expect.equals(0x0, 0xffffffff >>> 0xfffffffe);
  Expect.equals(0x0, 0xffffffff >>> 0xffffffff);
  Expect.equals(0x0, 0xffffffff >>> 0x100000000);
  Expect.throws(() => 0x100000000 >>> -0x100000000);
  Expect.throws(() => 0x100000000 >>> -0xffffffff);
  Expect.throws(() => 0x100000000 >>> -0xfffffffe);
  Expect.throws(() => 0x100000000 >>> -0xfedcba98);
  Expect.throws(() => 0x100000000 >>> -0xbd217d);
  Expect.throws(() => 0x100000000 >>> -0xa);
  Expect.throws(() => 0x100000000 >>> -0x2);
  Expect.throws(() => 0x100000000 >>> -0x1);
  Expect.equals(0x0, 0x100000000 >>> 0x0);
  Expect.equals(0x0, 0x100000000 >>> 0x1);
  Expect.equals(0x0, 0x100000000 >>> 0x2);
  Expect.equals(0x0, 0x100000000 >>> 0xa);
  Expect.equals(0x0, 0x100000000 >>> 0xbd217d);
  Expect.equals(0x0, 0x100000000 >>> 0xfedcba98);
  Expect.equals(0x0, 0x100000000 >>> 0xfffffffe);
  Expect.equals(0x0, 0x100000000 >>> 0xffffffff);
  Expect.equals(0x0, 0x100000000 >>> 0x100000000);

  Expect.equals(0xffffffff, ~-0x100000000);
  Expect.equals(0xfffffffe, ~-0xffffffff);
  Expect.equals(0xfffffffd, ~-0xfffffffe);
  Expect.equals(0xfedcba97, ~-0xfedcba98);
  Expect.equals(0xbd217c, ~-0xbd217d);
  Expect.equals(0x9, ~-0xa);
  Expect.equals(0x1, ~-0x2);
  Expect.equals(0x0, ~-0x1);
  Expect.equals(0xffffffff, ~0x0);
  Expect.equals(0xfffffffe, ~0x1);
  Expect.equals(0xfffffffd, ~0x2);
  Expect.equals(0xfffffff5, ~0xa);
  Expect.equals(0xff42de82, ~0xbd217d);
  Expect.equals(0x1234567, ~0xfedcba98);
  Expect.equals(0x1, ~0xfffffffe);
  Expect.equals(0x0, ~0xffffffff);
  Expect.equals(0xffffffff, ~0x100000000);
}
